zoukankan      html  css  js  c++  java
  • webpack手动搭建vue运行环境

    文件目录

    │  .babelrc
    │  index.html
    │  package.json
    ├─build
    │      webpack.base.js
    │      webpack.dev.js
    └─src
        │  App.vue
        │  index.js
        ├─router
        │      index.js
        └─views
                App.vue
                home.vue
    

     webpack配置(入口配置、输出配置,webapck插件加载,文件解析配置等)

    //build/webpack.base.js
    const path = require('path');
    const htmlWebpackPlugin = require('html-webpack-plugin');
    const VueLoaderPlugin = require('vue-loader/lib/plugin')
    function resolve (dir) {
        return path.join(__dirname, '..', dir)
    }
    module.exports = {
        entry:'./src/index.js',
        output:{
            path:path.resolve(__dirname,'../dist'),
            filename:'compiled/js/[name].[chunkhash:8].js',
            chunkFilename:'compiled/js/[name].[chunkhash:8].js'
        },
        resolve:{
          extensions:['.js','.vue','.json'],
            alias: {
                'vue$': 'vue/dist/vue.esm.js',
                '@': resolve('src'),
            }
        },
        module:{
          rules:[
              {
                  test: /.vue$/,
                  loader: 'vue-loader',
              },
              {
                  test: /.js$/,
                  loader: 'babel-loader',
              },
          ]
        },
        plugins:[
            new htmlWebpackPlugin({
                template:'./index.html',
                hash:true
            }),
            new VueLoaderPlugin()
        ]
    }

    devServer 配置

    //build/webpack.dev.js
    const merge = require('webpack-merge');
    const common = require('./webpack.base');
    const path = require('path');
    
    module.exports = merge(common,{
        devtool:'source-map',
        devServer:{
            contentBase:path.join(__dirname,'dist'),
            historyApiFallback:true,
            host:'localhost',
            port:8080,
            open:false,
            proxy:{
    
            }
        }
    })

    Vue路由配置

    src/router/index.js
    import Vue from 'vue';
    import Router from 'vue-router'
    
    Vue.use(Router)
    
    export default new Router({
        mode: 'history',
        routes: [
            {
                name: 'home',
                path: '/',
                component: resolve => require(['./../views/home'], resolve),
            }
         ]
    })  

    Vue 的一个模板文件

    // src/views/home.vue
    <template>
        <div class="container">
            <p>{{msg}}</p>
        </div>
    </template>
    
    <script>
        export default {
            name: "ForeEnd",
            data(){
                return {
                    msg:'abc'
                }
            }
        }
    </script>
    
    <style scoped>
    
    </style>
    

    Vue 路由的挂载点文件(路由每变动一次,都会将当前路由文件塞到router-view中)

    // src/App.vue
    <template>
        <div id="app">
            <router-view/>
        </div>
    </template>
    
    <script>
        export default {
            name: 'App'
        }
    </script>
    <style>
    </style>

    Vue的路口文件或者说是Vue的全局文件

    // src/index.js
    import Vue from 'vue';
    import router from './router'
    import App from './App'
    new Vue({
        router,
        components:{App},
        template:'<App/>'
    }).$mount('#app')
    

    Vue文件渲染从App.vue->index.html

    // index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="app"></div>
    </body>
    </html>

    整个项目的全局配置文件(项目启动命令、项目依赖)

    // package.json
    {
      "name": "webpack-vue",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "start": "webpack-dev-server --config build/webpack.dev.js"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@babel/core": "^7.4.5",
        "@babel/preset-env": "^7.4.5",
        "@babel/preset-react": "^7.0.0",
        "babel-loader": "^8.0.6",
        "babel-polyfill": "^6.26.0",
        "clean-webpack-plugin": "^3.0.0",
        "css-loader": "^2.1.1",
        "postcss-loader": "^3.0.0",
        "autoprefixer": "^9.6.0",
        "node-sass": "^4.12.0",
        "sass-loader": "^7.1.0",
        "html-webpack-plugin": "^3.2.0",
        "style-loader": "^0.23.1",
        "webpack": "^4.33.0",
        "webpack-cli": "^3.3.3",
        "webpack-dev-server": "^3.7.1",
        "webpack-merge": "^4.2.1",
        "vue-loader": "^15.7.0",
        "vue-template-compiler": "^2.6.10"
      },
      "dependencies": {
        "vue": "^2.6.11",
        "vue-router": "^3.4.3"
      }
    }

    最后执行以下命令安装依赖

    npm install 或者 cnpm install(如果安装了得话) 
    npm run start //启动 浏览器打开localhost:8080就可以访问首页了
    

      

  • 相关阅读:
    设计模式:单一职责原则
    多线程的创建
    Android开发基础(java)14
    面向对象编程的思想(6)
    面向对象编程的思想(5)未完成
    面向对象编程的思想(4)
    面向对象编程的思想(3)
    面向对象编程的思想(2)
    面向对象编程的思想(1)
    GDB 命令详细解释
  • 原文地址:https://www.cnblogs.com/yz-blog/p/13495240.html
Copyright © 2011-2022 走看看