第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Vue前端學(xué)習(xí)筆記

標(biāo)簽:
Vue.js

常见问题整理

1. 前端为何要进行打包和构建?

从2个方面来回答:写代码和产出代码

  • 体积更小(Tree-Shaking、压缩、合并),加载更快
  • 编译高级语言和语法(TS、ES6+,模块化,scss),减少在开发过程中的犯错,提高开发效率
  • 兼容性和错误检查(Polyfill、postcss、eslint),
  • 统一、高效的开发环境
  • 统一的构建流程和产出标准
  • 集成公司构建规范(提测、上线等)

2. 常见的loader和plugin有哪些?

loader如下:
babel-loader、css-loader、postcss-loader、style-loader、url-loader
plugin如下:
HtmlWebpackPlugin、CleanWebpackPlugin、DefinePlugin、MiniCssExtractPlugin、IgnorePlugin、HappyPack、ParallelUglifyPlugin

相关loader和plugin配置文件如下:

loaders: [
    {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader?optional=runtime&cacheDirectory"
    },
    // 直接引入图片 url
    {
        test: /\.(png|jpg|jpeg|gif)$/,
        use: 'file-loader'
    },
	// {
	//     test: /\.css$/,
	//     // loader 的执行顺序是:从后往前
	//     loader: ['style-loader', 'css-loader']
	// },
	{
		test: /\.css$/,
		// loader 的执行顺序是:从后往前
		loader: ['style-loader', 'css-loader', 'postcss-loader'] // 加了 postcss
	},
	{
		test: /\.less$/,
		// 增加 'less-loader' ,注意顺序
		loader: ['style-loader', 'css-loader', 'less-loader']
	}, {
    test: /\.(png|jpg|jpeg|gif)$/,
		use: {
			loader: 'url-loader',
			options: {
				// 小于 5kb 的图片用 base64 格式产出
				// 否则,依然延用 file-loader 的形式,产出 url 格式
				limit: 5 * 1024,

				// 打包到 img 目录下
				outputPath: '/img1/',

				// 设置图片的 cdn 地址(也可以统一在外面的 output 中设置,那将作用于所有静态资源)
				// publicPath: 'http://cdn.abc.com'
					}
			}
	},
]
plugins: [
    // new HtmlWebpackPlugin({
    //     template: path.join(srcPath, 'index.html'),
    //     filename: 'index.html'
    // })

    // 多入口 - 生成 index.html
    new HtmlWebpackPlugin({
        template: path.join(srcPath, 'index.html'),
        filename: 'index.html',
        // chunks 表示该页面要引用哪些 chunk (即上面的 index 和 other),默认全部引用
        chunks: ['index', 'vendor', 'common']  // 要考虑代码分割
    }),
    // 多入口 - 生成 other.html
    new HtmlWebpackPlugin({
        template: path.join(srcPath, 'other.html'),
        filename: 'other.html',
        chunks: ['other', 'vendor', 'common']  // 考虑代码分割
    }),
	new CleanWebpackPlugin(), // 会默认清空 output.path 文件夹
	// 通常使用该插件来判别代码运行的环境变量。
	new webpack.DefinePlugin({
		// window.ENV = 'production'
		ENV: JSON.stringify('production')
	}),

	// 抽离 css 文件
	new MiniCssExtractPlugin({
		filename: 'css/main.[contentHash:8].css'
	}),

	// 忽略 moment 下的 /locale 目录
	new webpack.IgnorePlugin(/\.\/locale/, /moment/),

	// happyPack 开启多进程打包
	new HappyPack({
		// 用唯一的标识符 id 来代表当前的 HappyPack 是用来处理一类特定的文件
		id: 'babel',
		// 如何处理 .js 文件,用法和 Loader 配置中一样
		loaders: ['babel-loader?cacheDirectory']
	}),

	// 使用 ParallelUglifyPlugin 并行压缩输出的 JS 代码
	new ParallelUglifyPlugin({
		// 传递给 UglifyJS 的参数
		// (还是使用 UglifyJS 压缩,只不过帮助开启了多进程)
		uglifyJS: {
			output: {
				beautify: false, // 最紧凑的输出
				comments: false, // 删除所有的注释
			},
			compress: {
				// 删除所有的 `console` 语句,可以兼容ie浏览器
				drop_console: true,
				// 内嵌定义了但是只用到一次的变量
				collapse_vars: true,
				// 提取出出现多次但是没有定义成变量去引用的静态值
				reduce_vars: true,
			}
		}
	})
]
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消