`
haiyupeter
  • 浏览: 427634 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

项目中使用webpack5

阅读更多
近期react及vueJs的普及,ES6也有相应的推广及普及,前端的开发模式发生较大的改变。
基于此,开发提供webpack的支持,使开发能及时跟进前端的快速变化,保证项目开发与较新的技术接轨,提高开发效率。
1、安装nodeJS
https://nodejs.org/en/
nodeJS是基础运行环境,默认下载最新版本即可,提供对npm的支持

2、初始化工程
npm init
过程可以按照需要填写相应的配置信息,默认生成package.json文件(其中devDependencies中的babel后续内容讲解)
{
  "name": "webpack-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "haiyupeter",
  "license": "ISC",
  "devDependencies": {
  }
}

此文件中 scripts 非常重要,可以直接使用 npm test直接跑scripts中的test命令
(1)添加 "start": "webpack-dev-server --devtool eval --progress"
可以使用使用 npm start 直接启动服务器,保证webpack-dev-server启动默认的webpack.config.js,如果不用名称“start”则需要加上 npm run ***
(2)再添加
"build-common": "webpack-dev-server --devtool eval --progress --config webpack.common.config.js"
// 指定配置文件为webpack.common.config.js,如此可以保证可以多个任务同时执行,保证多个任务同时进行,可以按需要生成不同类型的文件
(3)参数 --content-base ./common-build 用于指定当前的webpack的基础目录,能同时处理不同的目录的文件,如此实现只要在一个工程里面配置和安装webpack相关的配置即可,而并不需要安装多个

3、示例工程目录webpack-test
/es6
-- main.js
-- Person.js
index.html
webpack.config.js

4、安装webpack
npm install -g cnpm --registry=https://registry.npm.taobao.org
// 使用淘宝的镜像cnpm,用于代理网络上的一些插件到国内,加快下载速度
cnpm install webpack -g // 全局加载webpack
cnpm install webpack-cli -g //全局加载webpack-cli
cnpm install webpack-dev-server -g // 全局加载服务器,支持实时更新
cnpm install babel-core --save-dev // 开发环境babel-core
cnpm install babel-loader --save-dev // 开发环境babel-loader
cnpm install babel-preset-es2015 --save-dev // 安装ES2015转码规则
cnpm install webpack --save-dev // 一般都会用到webpack,开发环境出也依赖,否则require('webpack')会报错

babel的介绍可参考阮一峰的文章:http://www.ruanyifeng.com/blog/2016/01/babel.html

5、webpack配置文件webpack.config.js
var path = require('path');
module.exports = {
  entry: "./es6/main.js",
  output: {
    path: __dirname,
    filename: "bundle.js"
  },
   //设置开发者工具的端口号,不设置则默认为8080端口
    devServer: {
        inline: true,
        port: 8181
    },
  module: {
    rules: [
      {
        test: path.join(__dirname, 'es6'),
        loader: 'babel-loader',
        query: {
          presets: ['es2015']
        }
      }
    ]
  }
}


(1)entry入口文件:可以为数组对象,提供打包多个文件的可能。
如 {
"index": ["main1.js", "main2.js", "main3.js"],
"goods": ["goods1.js", "goods2.js", "goods3.js"]
}
(2)output输出文件:[name]/[name].js // 可以选择为通用的生成名字,如此可以保证引用的文件的正确性
loaders为加载器,加载器可以参考链接 http://webpack.github.io/docs/list-of-loaders.html
(3)devServer为webpack-dev-server服务器的开发环境和端口设置等
6、各文件内容详解
Person.js
class Person{
	constructor(name, age) {
		this.name = name;
		this.age = age;
	}
	
	say() {
		return '我是' + this.name + ',我今年' + this.age + '岁了。';
	}
}
export default Person;


main.js
import Person from './Person.js';

let p = new Person('张三3', 20);
document.write(p.say());



index.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>test es6</title>
</head>
<body>
	<script src="bundle.js"></script>
</body>
</html>


7、打成多文件示例
新增main2.js
import Person from './Person.js';

let p = new Person('李四', 20);
document.write(p.say());


修改webpack.config.js
var path = require('path');
module.exports = {
  entry: { 
			"main": ["./es6/main.js"],
			"main2": ["./es6/main2.js"]
		},
  output: {
    path: __dirname,
    filename: "[name].js"
  },
  module: {
    loaders: [
      {
        test: path.join(__dirname, 'es6'),
        loader: 'babel-loader',
        query: {
          presets: ['es2015']
        }
      }
    ]
  }
}


此时打出 main.js 和 main2.js(根据entry的key输出的)
index.html引用如下:
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>test es6</title>
</head>
<body>
	<script src="main.js"></script>
	<script src="main2.js"></script>
</body>
</html>



8、安装插件,支持目录构建
  plugins: [
	  new webpack.optimize.CommonsChunkPlugin({
		name: "vendor",
		// filename: "vendor.js"
		// (给 chunk 一个不同的名字)

		minChunks: Infinity
		// (随着 entry chunk 越来越多,
		// 这个配置保证没其它的模块会打包进 vendor chunk)
	  }),
            new webpack.BannerPlugin('此处理为打注释专用'),
		// 启动压缩
		new webpack.optimize.UglifyJsPlugin({
			compress: {
				warnings: false
			}
		})
	]


CommonsChunkPlugin 用于抽取通用的JS,保证JS的正确性,此插件可以用多可,生成多个通用文件
BannerPlugin 助于向文件添加注释
UglifyJsPlugin 开启代码压缩,在正式环境中使用

9、实际使用中
请将开发环境和正式环境分开,保证在正式环境的文件是最小的,效率最高;而在测试环境,则是最大化文件,易于调试

10、工具
html-loader的使用,可以在页面中使用include标签进行引用,实现对header及footer的引用,如
// 添加
cnpm install html-loader --save-dev

<%=require('html-loader!./header.html')%>


DefinePlugin 的使用,可以用于模板文件中的变量替换

11、资源拷贝

copy-webpack-plugin
安装
cnpm install --save-dev copy-webpack-plugin
引入
const CopyWebpackPlugin = require('copy-webpack-plugin');
使用
new CopyWebpackPlugin([{
                from : "res/js/element-ui",
                to : "js/element-ui"
            }])


需要弄懂的 webpack

优化
环境配置:压缩文件
代码分割:splitChunks 分割引用的js块
https://blog.51cto.com/13869008/2164811
https://www.jianshu.com/p/fba5ebfdd975



参考文章:
webpack 环境变量配置 dotenv
https://blog.csdn.net/sinat_41212418/article/details/121915239
https://www.jianshu.com/p/a76f15870a73

https://www.jianshu.com/p/1fc5b5151abf  搭建基于webpack4.0的vue项目,这篇文章就够了
http://www.runoob.com/w3cnote/webpack-tutorial.html
https://www.cnblogs.com/vajoy/p/4650467.html
https://segmentfault.com/a/1190000003970448
http://www.jianshu.com/p/42e11515c10f
http://www.jianshu.com/p/a64735eb0e2b
http://web.jobbole.com/86984/

webpack参数详解:
https://www.cnblogs.com/little-ab/articles/6953904.html
webpack之html-webpack-plugin用于生成html文件,非常的有用:
https://www.cnblogs.com/kerry-xu/p/6384436.html

webpack中文文档:
https://webpack.docschina.org/

webpack常用插件:
https://www.jianshu.com/p/fceb2ef5607d

ajax请求axios
https://www.runoob.com/vue2/vuejs-ajax-axios.html
https://blog.csdn.net/qq_30631063/article/details/107099336
分享到:
评论

相关推荐

    vue2.6+webpack5+typescript

    在Vue项目中使用TypeScript,我们需要在`tsconfig.json`中配置相应的编译选项,比如`allowSyntheticDefaultImports`和`esModuleInterop`,以便与CommonJS和ES模块兼容。 4. **项目结构**: - `vue-shim.d.ts`: 这...

    vue2 + webpack5相适配的 能成功打包的 package.json 文件

    适宜人群:想要学习 webpack 配置的,各个版本之间出现问题的,想要解决各种配置报错的,想要 vue2 + webpack5 成功创建项目的都可以; 小记:这只是配置的 package.json 文件,更有配置好的 webpack.config.js ...

    Webpack插件来检测未使用的文件和使用的文件中未使用的导出

    在这个主题中,我们将深入探讨如何利用Webpack插件来检测未使用的文件以及在已使用的文件中查找未使用的导出。 首先,Webpack 插件是扩展Webpack功能的关键组成部分,它们通过在Webpack构建生命周期中的不同阶段...

    Webpack2在项目中的配置实践

    本实践将深入探讨如何在实际项目中配置和使用 Webpack 2。 一、Webpack 2 的核心概念 1. **Entry(入口)**:定义项目的起点,Webpack 会从这些入口点开始构建依赖图。在 `webpack.config.js` 文件中,你可以设置...

    webpack多页面项目配置

    Webpack 是一个流行的模块打包工具,尤其在JavaScript开发中被广泛使用。在单页面应用(SPA)的场景下,Webpack 的使用已经相当成熟,但当面对多页面应用(MPA)时,配置会稍微复杂一些。本篇文章将深入探讨如何设置...

    webpack5 文档资料

    19. **docs**:这个目录可能包含了 Webpack 5 的文档,包括使用教程、配置参考等,对于学习和理解 Webpack 5 的工作原理非常有用。 总的来说,Webpack 5 提供了一个强大的工具链,用于构建现代 JavaScript 应用程序...

    webpack-使用webpack-dev-server.rar

    要使用 `webpack-dev-server`,首先需要安装它作为项目的开发依赖: ```bash npm install --save-dev webpack-dev-server ``` 然后,在 `webpack.config.js` 配置文件中添加 `devServer` 配置项: ```javascript ...

    vue2+webpack搭建h5框架

    2. **初始化项目**:使用Vue CLI创建一个新的Vue项目,可以选择webpack模板。 3. **配置Webpack**:根据项目需求,自定义Webpack配置,例如设置别名、调整输出路径、引入加载器等。 4. **创建Vue组件**:根据项目...

    webpack5配置之vue3

    基于webpack5构建的vue3项目,可用来学习webpack5的常用配置,和常见优化。https://webpack.docschina.org/plugins/image-minimizer-webpack-plugin/#root。 基于webpack5构建的vue3项目,可用来学习webpack5的常用...

    WebPack的高级使用

    5. **优化输出(Optimization)**:包括压缩代码(使用 `TerserWebpackPlugin`)、提取CSS到单独文件(使用 `MiniCssExtractPlugin`)以及优化图片(使用 `image-webpack-loader`)。 6. **多入口配置(Multiple ...

    纯html+javascript+css webpack打包的项目

    在现代Web开发中,为了提高开发效率和优化网站性能,开发者经常使用Webpack这一强大的模块打包工具。本项目以HTML、JavaScript和CSS为基础,结合Webpack进行资源的管理和打包,使得项目结构清晰,易于理解和维护。...

    解决在vue项目中webpack打包后字体不生效的问题

    最近在项目开发过程中遇到如下问题:开发环境中设置的字体样式使用webpack打包后到生产环境不生效。如图: 打开控制台查看元素样式,发现在开发环境的时候”微软雅黑”被解析成unicode编码并且带着双引号, 但使用...

    Webpack5-V1.0(学习指南)

    在Webpack5中,这些概念依然重要,但有了新的升级。例如,新的"entry"配置支持动态导入,这允许我们在运行时按需加载模块,从而减少初始加载时间。而"output"的改进则体现在更好的文件命名策略和公共路径优化,使...

    使用 webpack 从0开始搭建的 vue3+sass+element-plus+typescript 项目

    在Vue3项目中使用TypeScript,可以增强组件和项目的可维护性。 **Sass/SCSS** 是一种预处理器,扩展了CSS语法,增加了变量、嵌套规则、混合(mixins)等功能,使CSS编写更具有可维护性和可扩展性。 **Webpack** 是...

    使用webpack运行终端命令

    通过全局安装 Webpack 和 Webpack CLI,可以在任何项目中使用它们: ```bash npm install -g webpack webpack-cli ``` 对于项目内部的依赖,需要在项目根目录创建 `package.json` 文件,然后局部安装 Webpack 和 ...

    The road to webpack 5.pdf

    此外,Webpack 5还关注了开源项目的可持续性,通过改进贡献者激励机制,鼓励更多的人参与到项目中,使得社区更加活跃,问题能得到更快的响应和解决。 Webpack 5 的发布,对于开发者来说,不仅带来了性能上的提升,...

    手把手搭建h5框架,webpack+jq 与webpack +vue

    手把手搭建h5框架,webpack+jq 与webpack +vue。...1.初始化一个npm项目 2.安装pnpm 3.安装webpack webpack-cli 4.新建webpack.config.js配置文件 5.安装babel 详细安装方式,手把手教程见README.md文档

    vue3+webpack5项目搭建基础版

    使用vue3 +webpack5 + pina搭建的基础版前端项目。内容详细,包含配置注释等。配合文档(https://blog.csdn.net/qq_32768761/article/details/138844547?spm=1001.2014.3001.5501)实现从vue3创建项目,使用webpack5...

    【JavaScript源代码】vue项目配置 webpack-obfuscator 进行代码加密混淆的实现.docx

    在Vue项目中,配置`webpack-obfuscator`的方法取决于你使用的是Vue CLI的哪个版本。 对于Vue CLI 3.x或更高版本,你可以在`vue.config.js`文件中进行配置: ```javascript const path = require('path'); var ...

    使用Webpack的提示和技巧

    本文将深入探讨一些使用Webpack的提示和技巧,以提升开发效率和项目性能。 1. **配置文件理解**: Webpack 的核心在于其配置文件 `webpack.config.js`。配置文件允许你定义输入、输出、加载器、插件等一系列参数,...

Global site tag (gtag.js) - Google Analytics