>[success] # 前端开发面临的问题
~~~
1.想使用es6+新特性,但是却不能很好的兼容浏览器
2.想使用 less/sass/postCss 增强css的编程性,但是浏览器是不支持这些的
3.想使用模块化的方式开发提高项目维护性但是运行环境有些不能直接支持
4.上线前手动压缩代码和文件资源
5.统一大家的代码风格
以上问题之前都是通过人为的方式解决,现在这些重复的工作被自动化完成这些琐碎的步骤就是前端工程化的目的
~~~
[工程化不错的博客](https://www.yuque.com/kongdepeng/rgpm60/pt15oa)
>[success] # 项目开发流程步骤
~~~
1.package.json 依赖管理文件
2.选择 npm 或 Yarn 作为包管理器
3.确定项目技术栈
4.选择构建工具,例如webpack
5.打通构建流程,通过安装与配置各种 Loader 、插件和其他配置项
6.优化构建流程,针对开发/生产环境的不同特点进行各自优化
7.选择和调试辅助工具,例如代码检查工具和单元测试工具,安装相应依赖并调试配置文件。
8.编写说明文档 README.md
package.json 1) npm 项目文件
package-lock.json 2) npm 依赖 lock 文件
public/ 3) 预设的静态目录
src/ 3) 源代码目录
main.ts 3) 源代码中的初始入口文件
router.ts 3) 源代码中的路由文件
store/ 3) 源代码中的数据流模块目录
webpack/ 4) webpack 配置目录
common.config.js 4) webpack 通用配置文件
dev.config.js 4) webpack 开发环境配置文件
prod.config.js 4) webpack 生产环境配置文件
.browserlistrc 5) 浏览器兼容描述 browserlist 配置文件
babel.config.js 5) ES 转换工具 babel 配置文件
tsconfig.json 5) TypeScript 配置文件
postcss.config.js 5) CSS 后处理工具 postcss 配置文件
.eslintrc 7) 代码检查工具 eslint 配置文件
jest.config.js 7) 单元测试工具 jest 配置文件
.gitignore 8) Git 忽略配置文件
README.md 8) 默认文档文件
~~~
>[success] # 脚手架
[关于脚手架介绍的文章这个文章分上中下后续需要细读一下](https://juejin.im/post/6844903928618811400)
~~~
1.脚手架它原本是建筑工程术语,指为了保证施工过程顺利而搭建的工作平台,它为工人们在各层施工提供
了基础的功能保障在软件开发领域,脚手架是指通过各种工具来生成项目基础代码的技术。多个项目开发
流程大概率会有有相同内容,每个新项目都重复上面八个步骤是会让项目反而变得繁琐,比如相同文件目录
,相同的构建工具的配置,通过脚手架工具免去人工处理上的环节,轻松地搭建起项目的初始环境
2.脚手架的本质:'创建项目基础结构、提供项目规范和约定',举个例子当我们每次搭建新的项目的时候
都需要可能有'相同的组织结构','相同的开发范式','相同的依赖(比如都用vue)','相同的基础代码'
每次这些相同的内容,脚手架就是为了解决在每开一次新的项目时候都要去手动构建,通过脚手架自动
生成一个项目骨架
3.针对框架本身的脚手架 -- vuecli / angular-cli / create-react-app,这类脚手架都是会根据项目创建时,通过
用户选择的配置生成对应的项目基础结构,一般是针对特定自己的框架开发的
4.通用的脚手架 -- Yeoman,允许创建任何类型的应用程序。它允许快速开始新项目并简化现有项目的维护。
5.Plop 是一个基于node js所开发的小工具,主要作用是根据模板代码生成目标代码
~~~
>[danger] ##### 总结
~~~
1.对比几个前端常见的工具更好的说明脚手架的作用
1.1.'yeoman',项目结构模板。
1.2.'webpack',代码打包工具。
1.3.'grunt/gulp', 流程构建工具,和webpack有一定交集,但是定制性更强。
在建筑工程中脚手架的意思是为了保证各施工过程顺利进行而搭设的工作平台,'在编程'中可以最简单的理解
就是创建一类通用项目的结构目录基础和通用的项目规范。
2.脚手架的意义:
虽然存在vuecli 这类脚手架只是会将公用一些文件目录划分好,但是涉及到实际开发需求场景,中会出现一部分
基础代码甚至业务代码在相同类型项目时还是重复的,这个时候最笨的做法就是复制项目A,删除部分代理
直流一个骨架,开发项目B,以此不停地迭代重复这时我们就可以把公共部分都放到脚手架工具当中生成,
让脚手架工具发挥更大的价值
~~~
>[danger] ###### 对vuecli 和react-script 两个脚手架比较文章
[链接](https://kaiwu.lagou.com/course/courseInfo.htm?courseId=416#/detail/pc?id=4415)
- 工程化 -- Node
- vscode -- 插件
- vscode -- 代码片段
- 前端学会调试
- 谷歌浏览器调试技巧
- 权限验证
- 包管理工具 -- npm
- 常见的 npm ci 指令
- npm -- npm install安装包
- npm -- package.json
- npm -- 查看包版本信息
- npm - package-lock.json
- npm -- node_modules 层级
- npm -- 依赖包规则
- npm -- install 安装流程
- npx
- npm -- 发布自己的包
- 包管理工具 -- pnpm
- 模拟数据 -- Mock
- 页面渲染
- 渲染分析
- core.js && babel
- core.js -- 到底是什么
- 编译器那些术语
- 词法解析 -- tokenize
- 语法解析 -- ast
- 遍历节点 -- traverser
- 转换阶段、生成阶段略
- babel
- babel -- 初步上手之了解
- babel -- 初步上手之各种配置(preset-env)
- babel -- 初步上手之各种配置@babel/helpers
- babel -- 初步上手之各种配置@babel/runtime
- babel -- 初步上手之各种配置@babel/plugin-transform-runtime
- babel -- 初步上手之各种配置(babel-polyfills )(未来)
- babel -- 初步上手之各种配置 polyfill-service
- babel -- 初步上手之各种配置(@babel/polyfill )(过去式)
- babel -- 总结
- 各种工具
- 前端 -- 工程化
- 了解 -- Yeoman
- 使用 -- Yeoman
- 了解 -- Plop
- node cli -- 开发自己的脚手架工具
- 自动化构建工具
- Gulp
- 模块化打包工具为什么出现
- 模块化打包工具(新) -- webpack
- 简单使用 -- webpack
- 了解配置 -- webpack.config.js
- webpack -- loader 浅解
- loader -- 配置css模块解析
- loader -- 图片和字体(4.x)
- loader -- 图片和字体(5.x)
- loader -- 图片优化loader
- loader -- 配置解析js/ts
- webpack -- plugins 浅解
- eslit
- plugins -- CleanWebpackPlugin(4.x)
- plugins -- CleanWebpackPlugin(5.x)
- plugin -- HtmlWebpackPlugin
- plugin -- DefinePlugin 注入全局成员
- webapck -- 模块解析配置
- webpack -- 文件指纹了解
- webpack -- 开发环境运行构建
- webpack -- 项目环境划分
- 模块化打包工具 -- webpack
- webpack -- 打包文件是个啥
- webpack -- 基础配置项用法
- webpack4.x系列学习
- webpack -- 常见loader加载器
- webpack -- 移动端px转rem处理
- 开发一个自己loader
- webpack -- plugin插件
- webpack -- 文件指纹
- webpack -- 压缩css和html构建
- webpack -- 清里构建包
- webpack -- 复制静态文件
- webpack -- 自定义插件
- wepack -- 关于静态资源内联
- webpack -- source map 对照包
- webpack -- 环境划分构建
- webpack -- 项目构建控制台输出
- webpack -- 项目分析
- webpack -- 编译提速优护体积
- 提速 -- 编译阶段
- webpack -- 项目优化
- webpack -- DefinePlugin 注入全局成员
- webpack -- 代码分割
- webpack -- 页面资源提取
- webpack -- import按需引入
- webpack -- 摇树
- webpack -- 多页面打包
- webpack -- eslint
- webpack -- srr打包后续看
- webpack -- 构建一个自己的配置后续看
- webpack -- 打包组件和基础库
- webpack -- 源码
- webpack -- 启动都做了什么
- webpack -- cli做了什么
- webpack - 5
- 模块化打包工具 -- Rollup
- 工程化搭建代码规范
- 规范化标准--Eslint
- eslint -- 扩展配置
- eslint -- 指令
- eslint -- vscode
- eslint -- 原理
- Prettier -- 格式化代码工具
- EditorConfig -- 编辑器编码风格
- 检查提交代码是否符合检查配置
- 整体流程总结
- 微前端
- single-spa
- 简单上手 -- single-spa
- 快速理解systemjs
- single-sap 不使用systemjs
- monorepo -- 工程
- Vue -- 响应式了解
- Vue2.x -- 源码分析
- 发布订阅和观察者模式
- 简单 -- 了解响应式模型(一)
- 简单 -- 了解响应式模型(二)
- 简单 --了解虚拟DOM(一)
- 简单 --了解虚拟DOM(二)
- 简单 --了解diff算法
- 简单 --了解nextick
- Snabbdom -- 理解虚拟dom和diff算法
- Snabbdom -- h函数
- Snabbdom - Vnode 函数
- Snabbdom -- init 函数
- Snabbdom -- patch 函数
- 手写 -- 虚拟dom渲染
- Vue -- minVue
- vue3.x -- 源码分析
- 分析 -- reactivity
- 好文
- grpc -- 浏览器使用gRPC
- grcp-web -- 案例
- 待续