webpack重要特性-Vue.js - 60 分钟快速入门 webpack 项目模板

2023-08-30 0 9,511 百度已收录

概述

Browserify 是一个 CommonJS 风格的模块管理和打包工具。 上一篇文章我们简单介绍了一套基于browserify的Vue.js官方开发模板。 Webpack 提供了与 browserify 类似的功能,但在后端资源管理方面提供了更出色的功能。 官方提供了两个基于webpack的项目模板,分别是vue-webpack-simple模板和vue-webpack模板。 今天我们将介绍两个官方项目模板,并使用 vue-webpack-simple 模板创建一个简单的示例。

本文的Demo和源码已放在GitHub上。 如果您觉得内容不错,请在GitHub上点赞或者加星!

Webpack 简介

Webpack是目前最流行的后端资源模块化管理和打包工具。 它可以根据依赖关系和规则,将许多松散的模块打包成适合生产环境部署的后端资源。 它还可以根据需要对加载的模块进行代码分割。 ,等到真正需要的时候再异步加载。 通过loader转换,任何资源都可以被视为一个模块,例如CommonJs模块、AMD模块、ES6模块、CSS、图像、JSON、Coffeescript、LESS等。

下图是Webpack官方的介绍。 从这张图不难看出,一些相互依赖的模块文件会被打包成一个或多个js文件,这样可以减少HTTP请求的数量。

Webpack 支持的功能:

支持CommonJs和AMD模块,这意味着我们基本上可以轻松地迁移旧项目。 内联模块加载器和插件机制使其具有更好的灵活性和可扩展性,例如提供对CoffeeScript和ES6的支持。 可以通过配置或智能分析打包成多个文件webpack重要特性,实现公共模块或按需加载。 样式文件和图像等静态资源也可以打包为模块。 配合loader加载器,可以支持sass、less等CSS预处理器。 有内置的source map,即使打包在一起仍然方便调试。

由于本文不是 webpack 教程,所以你还是需要了解一些 webpack 相关的知识。

环境计划

Node.js 和 Git 是必不可少的工具。 NPM 的最佳版本是 3.x 或更高版本。 NPM 3.x 提供了更有效的包依赖关系管理。

在使用这两个项目模板之前,需要先安装vue cli。 执行以下命令安装vue cli。

npm install -g vue-cli

安装vue cli后,我们可以基于vue-webpack-simple模板和vue-webpack模板创建项目。

使用vue-webpack-simple模板 1.生成项目

右键单击目录以运行 Git Bash Here。 例如我的目录是D:VueOfficialTemplates。

在 git bash 下输入以下命令:

vue init webpack-simple my-webpack-simple-demo

webpack-simple 是项目模板的名称,my-webpack-simple-demo 是要生成的项目的名称。

目录下会生成一个文件夹my-webpack-simple-demo。

2. 项目结构说明

打开my-webpack-simple-demo文件夹,看到如下目录结构:

文件树结构如下:

├─.babelrc		// babel配置文件
├─.gitignore	
├─index.html		// 主页
├─package.json		// 项目配置文件
├─README.md  
├─webpack.config.js	// webpack配置文件
├─dist			// 发布目录
│   ├─.gitkeep       
├─src			// 开发目录	
│   ├─App.vue		// App.vue组件
│   ├─main.js		// 预编译入口

与 browserify-simple 模板相比,多了一个 webpack.config.js 文件。

包.json

{
  "name": "my-webpack-simple-demo",
  "description": "A Vue.js project",
  "author": "keepfool ",
  "private": true,
  "scripts": {
    "dev": "webpack-dev-server --inline --hot",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
  },
  "dependencies": {
    "vue": "^1.0.0",
    "babel-runtime": "^6.0.0"
  },
  "devDependencies": {
    "babel-core": "^6.0.0",
    "babel-loader": "^6.0.0",
    "babel-plugin-transform-runtime": "^6.0.0",
    "babel-preset-es2015": "^6.0.0",
    "babel-preset-stage-2": "^6.0.0",
    "cross-env": "^1.0.6",
    "css-loader": "^0.23.0",
    "file-loader": "^0.8.4",
    "json-loader": "^0.5.4",
    "url-loader": "^0.5.7",
    "vue-hot-reload-api": "^1.2.0",
    "vue-html-loader": "^1.0.0",
    "vue-loader": "^8.2.1",
    "vue-style-loader": "^1.0.0",
    "webpack": "^1.12.2",
    "webpack-dev-server": "^1.12.0"
  }
}

开发时依赖babel、各种loader、webpack,发布时依赖vue、babel-runtime。 脚本节点还定义了开发和发布期间的编译命令。 与 browserify 不同webpack重要特性,编译的输入和输出是在 webpack.config.js 文件中定义的。

webpack.config.js

var path = require('path')
var webpack = require('webpack')
module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'build.js'
  },
  resolveLoader: {
    root: path.join(__dirname, 'node_modules'),
  },
  module: {
    loaders: [
      {
        test: /.vue$/,
        loader: 'vue'
      },
      {
        test: /.js$/,
        loader: 'babel',
        exclude: /node_modules/
      },
      {
        test: /.json$/,
        loader: 'json'
      },
      {
        test: /.html$/,
        loader: 'vue-html'
      },
      {
        test: /.(png|jpg|gif|svg)$/,
        loader: 'url',
        query: {
 limit: 10000,
 name: '[name].[ext]?[hash]'
        }
      }
    ]
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true
  },
  devtool: '#eval-source-map'
}
if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'
  // http://vue-loader.vuejs.org/en/workflow/production.html
  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    }),
    new webpack.optimize.OccurenceOrderPlugin
  ])
}

webpack.config.js 的内容比较容易理解。 它是用 CommonJS 编写的。 入口节点配置编译入口,输出节点配置输出。 这个入口输出配置的含义是:编译src/main.js文件,然后输出到dist/build.js文件。

3.安装项目依赖

执行以下命令安装项目依赖:

cd my-webpack-simple-demo
npm install

安装完成后,目录中会形成一个node_modules文件夹。

项目相关的依赖都存放在这个文件夹中,比 vue-browserify-simple 项目模板的依赖程度要高很多。

webpack重要特性-Vue.js - 60 分钟快速入门 webpack 项目模板

4. 运行示例

通过执行以下命令来运行示例:

npm run dev

打开127.0.0.1:8080,可以看到如下界面:

注意:与 browserify 不同,执行 npm run dev 命令后,不会在 dist 目录中生成 build.js 文件。 在开发环境中,build.js位于运行内存中。

5. 发布

执行以下命令将生成release build.js,该文件已被压缩。

npm run build

使用 vue-webpack 模板

webpack重要特性-Vue.js - 60 分钟快速入门 webpack 项目模板

重新打开 git bash 窗口并执行以下命令:

vue init webpack my-webpack-demo

webpack 是项目模板,my-webpack-demo 是项目名称。

目录下生成一个文件夹my-webpack-demo:

├── build/ # webpack config files
│   └── ...
├── config/ 
│   ├── index.js # main project config
│   └── ...
├── src/
│   ├── main.js # app entry file
│   ├── App.vue # main app component
│   ├── components/ # ui components
│   │   └── ...
│   └── assets/ # module assets (processed by webpack)
│       └── ...
├── static/ # pure static assets (directly copied)
├── test/
│   └── unit/ # unit tests
│   │   ├── specs/ # test spec files
│   │   ├── index.js # test build entry file
│   │   └── karma.conf.js       # test runner config file
│   └── e2e/ # e2e tests
│   │   ├── specs/ # test spec files
│   │   ├── custom-assertions/  # custom assertions for e2e tests
│   │   ├── runner.js # test runner script
│   │   └── nightwatch.conf.js  # test runner config file
├── .babelrc # babel config
├── .editorconfig.js # editor config
├── .eslintrc.js # eslint config
├── index.html # index.html template
└── package.json # build scripts and dependencies

2.安装依赖

执行以下两行命令安装项目依赖:

cd my-webpack-demo
npm install

(安装过程比较温和,需要耐心等待……)

3. 运行示例

webpack重要特性-Vue.js - 60 分钟快速入门 webpack 项目模板

4. 发布

执行以下命令生成发布:

npm run build

与vue-simple-webpack模板不同的是,所有静态资源,包括index.html,都生成在dist目录中。

这意味着您可以直接使用dist目录来发布应用程序,例如将dist目录发布为IIS下的网站。

vue-simple-webpack 示例

昨天我们使用 vue-simple-browserify 模板做了一个小例子。 今天我们将使用 vue-simple-webpack 模板来完成相同的示例。

我不会发布这个例子的代码。 可以从本文开头的GitHub地址下载。

总结

browserify 和 webpack 都是打包和模块依赖管理工具。 Webpack 的功能比 browserify 更强。 使用哪种工具取决于您的个人喜好和项目要求。

毫无疑问,官方基于vue cli、browserify、webpack的Vue.js项目模板确实能够给我们带来很大的便利,让我们快速投入开发。

在前面的章节中,我将尽可能地基于这个项目模板来解释 Vue.js 的每一点。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 webpack webpack重要特性-Vue.js - 60 分钟快速入门 webpack 项目模板 https://www.wkzy.net/game/184446.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务