多应用+插件架构,代码干净,支持一键云编译,码云点赞13K star,4.8-4.12 预售价格198元 广告
### git * 最常用的代码版本管理工具 * 常用 git 命令 * git add . * git checkout xxx * git commit -m "xxx" * git push origin master * git pull origin master ### webpack 和 babel #### 为什么需要 * ES6 模块化,浏览器暂不支持 * ES6 语法,浏览器并不完全支持 * 压缩代码,整合代码,让网页加载更快 #### webpack 配置 > 注意版本问题:最新版本的需要配置一些其他项 > > 所以我的是指定版本安装:和视频演示的版本一致 > > `npm install webpack@4.41.0 webpack-cli@3.3.9 webpack-dev-server@3.8.2 html-webpack-plugin@3.2.0 -D` * 初始化:`npm init -y` --> 生成 package.json 文件 * 安装 webpack 依赖:`npm install webpack webpack-cli -D` -D 选项为开发依赖 * webpack.config.js 文件基本配置 * ```javascript const path = require('path') module.exports = { mode: 'development', // production development entry: path.join(__dirname, 'src', 'index.js'), output: { filename: 'bundle.js', path: path.join(__dirname, 'dist'), }, } ``` * Ïpachage.json scripts 配置:`"build": "webpack"` 打包命令 * 扩展 html 打包; 安装插件 * `npm i html-webpack-plugin -D` * `npm i webpack-dev-server -D ` * webpack.config.js 配置 * ```javascript const path = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { mode: 'development', // production development entry: path.join(__dirname, 'src', 'index.js'), output: { filename: 'bundle.js', path: path.join(__dirname, 'dist'), }, plugins: [ new HtmlWebpackPlugin({ template: path.join(__dirname, 'src', 'index.html'), filename: 'index.html', // 打包后的 dist 下的文件名 }), ], devServer: { port: 3000, contentBase: path.join(__dirname, 'dist'), }, } ``` * package.json 配置 * ```javascript "scripts": { "dev": "webpack-dev-server", "build": "webpack [--config webpack.config.js]", "test": "echo \"Error: no test specified\" && exit 1" }, ``` * `npm run dev` 执行本地运行 ##### babel 配置、转义为 ES5 * `npm i @babel/core @babel/preset-env babel-loader -D` * `.babelrc` 文件配置 * ```javascript { "presets": ["@babel/preset-env"] } ``` * webpack.config.js 配置 * ```javascript module: { rules: [ { test: /\.js$/, // 符合此正则的走 babel-loader 插件 loader: ['babel-loader'], include: path.join(__dirname, 'src'), // 此目录下的走 babel-loader 插件 exclude: /node_modules/, // 排除此目录 }, ], }, ``` ##### ES6 模块化 * 第一种方式 ```javascript // a.js 导出多个 export function fn() { console.log('fn') } export const name = 'a' export const obj = { name: 'zhangsan', } // index.js 导入,需要解构 import { fn, name, obj } from './a' fn() // 正常使用 console.log(name,obj) ``` * 第二种方式 ```javascript // 导出一个 const obj = { name:'xxx' } export default obj // 导入,不需要解构 import obj from './c' ``` ##### 生产环境配置 * webpack.prod.js * package.json scripts `"build": "webpack --config webpack.prod.js",` * ```javascript const path = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { mode: 'production', // production development entry: path.join(__dirname, 'src', 'index.js'), output: { filename: 'bundle.[contenthash].js',// contenthash 根据代码内容计算出的哈希值 path: path.join(__dirname, 'dist'), }, module: { rules: [ { test: /\.js$/, // 符合此正则的走 babel-loader 插件 loader: ['babel-loader'], include: path.join(__dirname, 'src'), // 此目录下的走 babel-loader 插件 exclude: /node_modules/, // 排除此目录 }, ], }, plugins: [ new HtmlWebpackPlugin({ template: path.join(__dirname, 'src', 'index.html'), filename: 'index.html', // 打包后的 dist 下的文件名 }), ], } ``` 完整 webpack demo [gitee仓库](https://gitee.com/yishen_yishen/webpack-demo)