Vue.js快速入门
上QQ阅读APP看书,第一时间看更新

3.6 Webpack下的Vue.js项目文件结构

前面我们已经安装了Webpack、vue-cli并运行成功,看到了Vue.js的第一个页面。那么我们首先需要对Webpack下的Vue.js有一个全面的了解。

运行下面命令后:

$ vue init webpack my-project

会生成一个崭新的项目。它的文件结构如下:

▸build/         // 编译用到的脚本
 config/        // 各种配置
 dist/          // 打包后的文件夹
 node_modules/  // node第三方包
 src/           // 源代码
 static/        // 静态文件, 暂时无用
 index.html     // 最外层文件
 package.json   // node项目配置文件

下面我们针对重要的文件和文件夹依次说明。

3.6.1 build文件夹

build文件夹中保留了各种打包脚本,是不可或缺的,不可随意修改。

build文件夹展开后如下:

▾ build/
   build.js
   check-versions.js
   dev-client.js
   dev-server.js
   utils.js
   vue-loader.conf.js
   webpack.base.conf.js
   webpack.dev.conf.js
   webpack.prod.conf.js

•build.js:打包使用,不能修改。

•check-versions.js:检查npm的版本,不能修改。

•dev-client.js和dev-server.js:是在开发时使用的服务器脚本,不能修改(借助于node后端语言,在做Vue.js开发时,可以通过$npm run dev命令打开一个小的server运行Vue.js)。

•utils.js:不能修改,做一些css/sass等文件的生成。

•vue-loader.conf.js:非常重要的配置文件,不能修改。内容是用于辅助加载Vue.js用到的css source map等。

•Webpack.base.conf.js、Webpack.dev.conf.js、Webpack.prod.conf.js:这三个都是基本的配置文件,不能修改。

3.6.2 config文件夹

与部署和配置相关。

▾ config/
    dev.env.js
    index.js
    prod.env.js

•dev.env.js:开发模式下的配置文件,一般不用修改。

•prod.env.js:生产模式下的配置文件,一般不用修改。

•index.js:很重要的文件,定义了开发时的端口(默认8080)、图片文件夹(默认static)、开发模式下的代理服务器。


对于这个文件夹的内容,会在后续的章节中陆续进行解释(如对于某个页面的渲染过程、如何做代理转发)。

3.6.3 dist文件夹

打包之后的文件所在目录如下:

▾ dist/
    static/
      css/
        app.d41d8cd98f00b204e9800998ecf8427e.css
        app.d41d8cd98f00b204e9800998ecf8427e.css.map
      js/
        app.c482246388114c3b9cf0.js
        app.c482246388114c3b9cf0.js.map
        manifest.577e472792d533aaaf04.js
        manifest.577e472792d533aaaf04.js.map
        vendor.5f34d51c868c93d3fb31.js
        vendor.5f34d51c868c93d3fb31.js.map
    index.html

可以看到,对应的css、js、map都在这里。

注意,文件名中无意义的字符串是随机生成的。目的是为了让文件名发生变化,方便部署,同时方便Nginx服务器重新对该文件进行缓存。


•app.css:编译后的CSS文件。

•app.js:最核心的js文件,几乎所有的代码逻辑都会打包到这里。

•manifest.js:生成的周边js文件。

•vendor.js:生成的vendor.js文件。


另外,每个.map文件都非常重要。可以简单地认为,有了.map文件,浏览器就可以先下载整个.js文件,然后在后续的操作中“部分加载”对应的文件。

切记这个文件夹不要放到git中。因为每次编译之后,这里的文件都会发生变化。

3.6.4 node_modules文件夹

node项目所用到的第三方包特别多,也特别大。这些文件是由命令$ npm install产生的。所有在package.json中定义的第三方包都会被自动下载,保存在该文件夹下。

package.json:

// ...
"dependencies": {
  "vue": "^2.3.3",
  "vue-resource": "1.3.3",
  "vue-router": "^2.3.1",
  "vuex": "^2.3.1"
},
"devDependencies": {
  "autoprefixer": "^6.7.2",
  "babel-core": "^6.22.1",
  "babel-loader": "^6.2.10",
  "babel-plugin-transform-runtime": "^6.22.0",
  "babel-preset-env": "^1.3.2",
  "babel-preset-stage-2": "^6.22.0",
  "babel-register": "^6.22.0",
  //...
}
// ...

node_modules文件夹中往往会有几百个文件夹,如图3-24所示。

图3-24 node_modules文件夹

注意,这个文件夹不能放到git中。

3.6.5 src文件夹

src文件夹是核心源代码的所在目录。展开后如下所示(不同版本的vue-cli生成的目录会稍有不同,不过核心都是一样的):

▾ src/
    assets/
    logo.png
    components/
    Book.vue
    BookList.vue
    Hello.vue
   router/
    index.js
   App.vue
  main.js


•assets文件夹用到的图片都可以放在这里。

•components用到的“视图”和“组件”所在的文件夹(核心)。

•router/index.js是路由文件,定义了各个页面对应的url。

•如果index.html是一级页面模板的话,App.vue就是二级页面模板。所有的其他Vue.js页面都作为该模板的一部分被渲染出来。

•main.js没有实际的业务逻辑,但是为了支撑整个Vue.js框架,很有必要存在。