zoukankan      html  css  js  c++  java
  • vue-cli webpack项目npm run dev启动过程

    前言

    通过vue init webpack和npm install命令初始化项目后,执行npm run dev就打开了网站http://localhost:8080。初学者不知道index.html、App.vue、main.js是如何粘在一起的,这里简单说明一下。

    启动过程

    1.npm run dev

    npm run XXX是执行配置在package.json中的脚本,比如:

     "scripts": {
        "dev": "node build/dev-server.js",
        "start": "node build/dev-server.js",
        "build": "node build/build.js"
      },

    这里就是执行了 node build/dev-server.js文件。

    2.main.js和index.html

    build/dev-server.js里var webpackConfig = require('./webpack.dev.conf') 调用了webpack.dev.conf配置文件。

    var config = require('../config')
    if (!process.env.NODE_ENV) {
      process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
    }
    
    var opn = require('opn')
    var path = require('path')
    var express = require('express')
    var webpack = require('webpack')
    var proxyMiddleware = require('http-proxy-middleware')
    var webpackConfig = require('./webpack.dev.conf')

     webpack.dev.conf文件通过merge引用了webpack.base.conf.js文件。

    在webpack.base.conf.js文件中调用了./src/main.js

    main.js用到了一个html元素#app。

    // The Vue build version to load with the `import` command
    // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
    import Vue from 'vue'
    import App from './App'
    import router from './router'
    import Mint from 'mint-ui'
    
    var jquery = require('jquery');
    
    Vue.config.productionTip = false
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,
      template: '<App/>',
      components: { App }
    })

    再次回到webpack.dev.conf.js文件的结尾处。

       new HtmlWebpackPlugin({
          filename: 'index.html',
          template: 'index.html',
          inject: true
        }),

    template指定了index.html作为输出文件的模板文件。

    3.App.vue和Hello.vue

    在main.js文件中引用了App.vue和router。

    App.vue里有个router-view元素,所有通过router返回的vue都会填充在这个元素里面。

    <template>
      <div id="app">
        <img src="./assets/logo.png">
        <router-view></router-view>
      </div>
    </template>

    router/index.js文件中的路由配置,当访问根目录时就返回@/components/Hello.vue里的内容。

       {
          path: '/',
          name: 'Hello',
          component: Hello
        },

    所以最后看到的页面是由App.vue和Hello.vue两个模块组成的。

    参考链接

    1. html-webpack-plugin

    2. webpack开发和生产两个环境的配置详解

  • 相关阅读:
    mybatis 控制台打印sql脚本
    删除git库中untracked files(未监控)的文件
    亚马逊云实例被攻击 一个月账单三百多美刀
    ubuntu下搜索文件
    django 富文本展示 以及 post提交出错
    亚马逊EC2弹性IP收费
    redis 相关命令
    使用XSHELL连接EC2虚拟机实例
    springMVC下集成active MQ发送邮件
    ubuntu下安装JDK并搭建activeMQ
  • 原文地址:https://www.cnblogs.com/zeroes/p/vue-run-dev.html
Copyright © 2011-2022 走看看