前端工程化小结

项目初始化

脚手架

  • vue-clicss

  • create-react-appvue

  • create-react-nativereact

  • 各类boilerplate(github 搜索 关键字+boilerplate)webpack

框架和库

UI框架

  • vueios

    • element uinginx

    • iviewgit

  • reactgithub

    • antdweb

先后端交互

  • fetchvue-cli

  • axios

编码规范

  • eslint

  • stylelint

打包构建

webpack

一切皆模块,均可以经过js的方式引入

webpack核心

配置

  • entry

    • 打包入口,能够是单个文件,也能够是一个对象,或者数组,webpack会加载entry指定的文件,而后递归遍历每一个文件的依赖,最后打包到一块儿,输出到output指定的路径

  • output

    • 指定webpack打包以后输出的路径

  • resolve

    • 配置webpack如何查找文件

    • 若是路径指向一个文件

      • 若是路径具备文件扩展名,则被直接将文件打包。

      • 不然,将使用 [resolve.extensions]选项做为文件扩展名来解析,此选项告诉解析器在解析中可以接受哪些扩展名(例如 .js, .jsx)

    • 若是路径指向一个文件夹,则采起如下步骤找到具备正确扩展名的正确文件

      • 若是文件夹中包含 package.json 文件,则按照顺序查找 resolve.mainFields 配置选项中指定的字段。而且 package.json 中的第一个这样的字段肯定文件路径。

      • 若是 package.json 文件不存在或者 package.json 文件中的 main 字段没有返回一个有效路径,则按照顺序查找 resolve.mainFiles 配置选项中指定的文件名,看是否能在 import/require 目录下匹配到一个存在的文件名。

      • 文件扩展名经过 resolve.extensions 选项采用相似的方法进行解析。

  • module

    • module里配置了针对每一种模块如何加载

    • webpack支持的模块

      • ES2015 import 语句

      • CommonJS require() 语句

      • AMD define 和 require 语句

      • css/sass/less 文件中的 @import 语句。

      • 样式(url(...))或 HTML 文件(<img src=...>)中的图片连接(image url)

  • plugin

插件用于扩展webpack,在插件和loader能访问到的webpack上下文是不同的,plugin能够处理loader处理不了的事情

- 经常使用插件
    - HtmlWebpackPlugin
    - DefinePlugin
    - HotModuleReplacementPlugin
-  开发
    - https://doc.webpack-china.org/contribute/writing-a-plugin/\#-
  • loader

loader 用于加载待打包的资源,在import的时候触发。

-  经常使用loader
    - postcss-loader
    - css-loader
    - file-loader
-  开发
    - https://doc.webpack-china.org/contribute/writing-a-loader

babel

  • babel-core

  • bable-register

  • babel-helper

  • babel-loader

polyfill

开发调试

方案一:直接使用webpack-dev-server

  • webpack-dev-server=dev-server+webpack-dev-middleware+webpack-hot-middleware

方案二:开发服务器+webpack-dev-middleware+webpack-hot-middleware

开发服务器

  • 开发服务器通常基于express或者koa

  • webpack-dev-middleware

    • express中间件,接受客户端的get请求,而后把webpack打包到内存里的文件返回给客户端

    • 源码分析

      • middleware.js---入口文件

        • 判断请求是不是get请求,不是则转到下一个中间件

        • 不然读取文件,发送给客户端

      • lib

        • GetFilenameFromUrl.js

          • 经过url取到内存里的文件名

          • PathJoin.js

            • 处理路径

        • Shared.js

          • 处理和webpack的交互

  • webpack-hot-middleware

    • 启动server-send-event服务器,监听服务

    • 监听到打包事件以后,发送消息给客户端

    • 客户端接受到消息后刷新页面

    • hot-middleware是刷新整个页面,如何实现增量更新

      • react-hot-loader

      • vue-loader

    • 源码解析

      • middleware.js---入口文件

      • client.js

      • client-overlay.js

      • helpers.js

      • process-update.js

测试

单元测试

  • vue

  • react

    • jest+Enzyme

e2e测试

  • nightwatch+selenium

  • puppeter

打包优化

  • UglifyJsPlugin

  • OptimizeCSSPlugin

  • CommonsChunkPlugin

  • CompressionWebpackPlugin

  • 按需加载

部署

  • jenkins

  • nginx

相关文章
相关标签/搜索