>[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 -- 案例
- 待續