Part4-Webpack与脚手架

一、Webpack(熟悉)

从本质上来说,webpack是一个静态模块打包工具

要想让我们写好的模块化代码在各式各样的浏览器上能做到兼容,就必须借助于其他工具;而webpack的其中一个核心就是让我们可以进行模块化开发,并帮我们处理模块间的依赖关系。不仅仅是Javascript文件,我们的css、图片、json文件等在webpack中都可以当作模块来使用,这就是webpack的模块化概念。

1. gulp和webpack

Gulp侧重于前端开发的 整个过程 的控制管理(像是流水线),我们可以通过给gulp配置不同的task(通过Gulp中的gulp.task()方法配置,比如启动server、sass/less预编译、文件的合并压缩等等)来让gulp实现不同的功能,从而构建整个前端开发流程。

gulpfile.js

var gulp = require('gulp');
var uglify = require('gulp-uglify'); //压缩代码

// 压缩js
gulp.task('uglify',function(){
    var combined = combiner.obj([
        gulp.src('src/scripts/**/*.js'), //需要压缩的js文件路径
        sourcemaps.init(),
        uglify(), //压缩js
        sourcemaps.write('./'),
        gulp.dest('dest/scripts') //生成的js文件的目录
    ]);
});

//默认任务
gulp.task('default',['uglify']);

Webpack有人也称之为 模块打包机 ,由此也可以看出Webpack更侧重于模块打包,当然我们可以把开发中的所有资源(图片、js文件、css文件等)都可以看成模块,最初Webpack本身就是为前端JS代码打包而设计的,后来被扩展到其他资源的打包处理。Webpack是通过loader(加载器)和plugins(插件)对资源进行处理的。

2. webpack初体验

1. 生成项目依赖文件

2. 安装依赖

devDependencies与dependencies的区别:

在发布npm包的时候,本身dependencies下的模块会作为依赖,一起被下载;devDependencies下面的模块就不会自动下载了;但对于项目而言,npm install 会自动下载devDependencies和dependencies下面的模块。

3.创建入口文件

index.html

src/index.js

在浏览器打开

1568968799462

为什么会这样?因为浏览器并不兼容import引入模块这种方式,所以我们要用到webpack打包

4. 通过webpack打包

webpack.config.js:

package.json:

然后修改 index.html:

再打开 index.html,就可以观察到:

image-20211011192801529

5.webpack-dev-server

这时候如果修改index.html的背景颜色red改成是gray,会发现浏览器刷新也没有效果,需要再跑一次npm run start命令才有用,这时候就需要webpack-dev-server(热重载)

安装:

package.json:

这里注意:

1、启动webpack-dev-server后, 你在目标文件夹中是看不到编译后的文件的,实时编译后的文件都保存到了内存当中。想看到main.js文件,可以运行localhost:3002/main.js查看

index.html

至此,通过 npm run start 我们仍然无法访问html页面,因为打包出来的dist被隐藏,同时它也并不包含 index.html ,所以会有 Cannot GET / 的警告。

接下来,我们解决html的问题:

6. html-webpack-plugin

安装:npm install html-webpack-plugin -D

webpack.config.js

删掉index.html文件里面的main.js引用,因为html-webpack-plugin会自动把打包出来的bundle自动加到我们的index.html代码里

重新运行 npm run start,即可看到:

image-20211011195342567

并且,此时你随意修改 index.js 中的代码,界面也会实时更新。

7. css-loader

创建一个index.css

index.css

index.js

1568972642846

为什么报错,因为webpack默认是不识别.css文件的,需要我们通过 loader.css 文件进行解释成正确的模块。

安装css-loader和style-loader

webpack.config.js

再重新执行一次 npm run start 即可看到样式变化,同时,如果修改样式的话,也可以实时更新。

补充:引入的文件是less

安装:npm install less-loader less -D

规则:

{

​ test: /.less$/,

​ use: ['style-loader', 'css-loader', 'less-loader']

}

8. ES6 转 ES5

安装

配置loader

exclude表示排除掉 node_modules下载的依赖项。这样可以加速网站开发,而且我们也只需要对我们的项目src

源文件进行编译即可。

src/index.js 中引入es6语法

执行命令编译

编译后的结果

至此关于webpack的基本配置已经到这里。

9. html热更新

在安装过html-webpack-plugin之后,安装:

在index.js中引入index.html

在webpack.config.js中配置raw-loader:

10、图片资源

webpack5开始,不再需要安装loader来支持图片加载与打包。

webpack.config.js 添加:

然后给 index.html 写入:

再到 index.less 写入:

再到 index.js 写入:

然后运行 npm run start 即可看到图片,或是运行 npm run build 查看打包后的结果,并双击 dist/index.html 手动打开页面查看效果。

二、什么是Vue CLI(掌握)

  1. 如果你只是简单写几个Vue的Demo程序, 那么你不需要Vue CLI.

  2. 如果你在开发大型项目, 那么你需要, 并且必然需要使用Vue CLI

    1. 使用Vue.js开发大型应用时,我们需要考虑代码目录结构、项目结构和部署、热加载、代码单元测试等事情。

    2. 如果每个项目都要手动完成这些工作,那无疑效率比较低效,所以通常我们会使用一些脚手架工具来帮助完成这些事情。

  3. 那究竟什么是Vue-CLI呢?

    1. CLI(Command Line Interface).翻译为命令行界面,就是我们所说的脚手架。

    2. Vue CLI是一个官方发布的vue项目脚手架

    3. 使用vue-cli可以快速搭建Vue环境和webpack配置

三、Vue CLI使用准备

Node版本

Vue CLI 需要Node.js 8.9 或者更高版本(推荐使用 12.13.0)。你可以使用nvmnvm-window来管理电脑上面的Node版本。

安装Vue CLI脚手架的包:

安装之后,你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue,看看是否展示出了一份所有可用命令的帮助信息,来验证它是否安装成功。

你还可以用这个命令来检查其版本是否正确 (4.x):

如果安装比较慢,可以把npm切换成淘宝的源:

四、创建项目(掌握)

初始化项目

vue create xxx

运行以下命令来创建一个新项目:

Vue-CLI生成项目流程

  1. 选择Manually select features(自己选择项目用的模块), 回车键确认;

  2. 选择 Babel CSS Pre-processors (选择项目里面需不需要CSS预处理器), 通过空格选中或者取消选中, 回车键确认;

  3. Pick a CSS pre-processor(选中CSS 预处理器) ,这里选择Less, 回车键确认;

  4. Where do you prefer placing config for ....(babel protcss的配置是要放置到哪里去), 选择 In dedicated config files (独立的文件存放配置就可以),回车确认;

  5. Save this as a preset for future projects?(y/N) 把上面的所有选择单独保存成一个配置,方便以后的项目配置, 这里选择y,下一个选择就是输入这个配置的名字;选择N就不保存,然后回车直接生成一个项目出来.

你会被提示选取一个 preset。你可以选默认的包含了基本的 Babel + ESLint 设置的 preset,也可以选“手动选 择特性”来选取需要的特性。

这个默认的设置非常适合快速创建一个新项目的原型,而手动设置则提供了更多的选项,它们是面向生产的项目更加需要的。

CLI 预览

对于每一项的功能,此处做个简单描述:

  • TypeScript 支持使用 TypeScript 书写源码。

  • Progressive Web App (PWA) Support PWA支持

  • Router 路由

  • Vuex 状态管理

  • CSS Pre-processors 支持 CSS 预处理器。

  • Linter / Formatter 支持代码风格检查和格式化。

  • Unit Testing 支持单元测试。

  • E2E Testing 支持 E2E 测试。

如果你决定手动选择特性,在操作提示的最后你可以选择将已选项保存为一个将来可复用的 preset

~/.vuerc

被保存的 preset 将会存在用户的 home 目录下一个名为 .vuerc 的 JSON 文件里。如果你想要修改被保存的 preset / 选项,可以编辑这个文件。

在项目创建的过程中,你也会被提示选择喜欢的包管理器或使用淘宝 npm 镜像源以更快地安装依赖。这些选择也将会存入 ~/.vuerc

使用图形化界面

你也可以通过 vue ui 命令以图形化界面创建和管理项目:

上述命令会打开一个浏览器窗口,并以图形化界面将你引导至项目创建的流程。

图形化界面预览

项目结构

1569235847530

vue.config.js

vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。

这个文件应该导出一个包含了选项的对象:

webpack中添加别名

五、生命周期(掌握)

什么是生命周期: 从Vue创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期。

1、vue生命周期图示

lifecycle

2、生命周期解读

preview

3、注意点

image-20200715121741390

最后更新于

这有帮助吗?