摘要:前言想要快速開始多頁(yè)面應(yīng)用項(xiàng)目結(jié)構(gòu)如何更合理想要快速上手想要快速使用想要一鍵使用并能快速自定義主題樣式可以的這里,受和的啟發(fā),我做了這樣一個(gè)的腳手架,讓你一鍵搭建項(xiàng)目,快速開始。
前言
想要快速開始 react 多頁(yè)面應(yīng)用?
項(xiàng)目結(jié)構(gòu)如何更合理?
想要快速上手 Mobx?
想要快速使用 TypeScript?
想要一鍵使用 Ant-Design 并能快速自定義主題樣式?
可以的!??!
這里,受 Vue-cli 和 create-react-app 的啟發(fā),我做了這樣一個(gè) react 的腳手架 handy-cli,讓你一鍵搭建項(xiàng)目,快速開始。
特性簡(jiǎn)單易用,零配置
豐富的特性可供選擇 (Ant Design,TypeScript,Mobx,EsLint,TsLint)
支持導(dǎo)出 webpack 相關(guān)配置到項(xiàng)目目錄下
多頁(yè)面的支持
提供多種狀態(tài)管理方式
使用 ant-design 后,非常容易定制化 ant-design 主題
支持代碼保存時(shí)和代碼提交時(shí)校驗(yàn)代碼風(fēng)格
安裝使用npm安裝: npm install handy-cli -g 使用yarn安裝 yarn global add handy-cli項(xiàng)目git 使用
handy create預(yù)覽 使用手冊(cè)cd npm run start
Folder Structure
Single And Multi Page
Eject
Linter
State Management
Use Ant Design
Styles And Modules
Proxy
Folder Structure運(yùn)行handy create you-app-name(例如選擇了 ant-design、eslint、mobx),handy-cli 會(huì)生成如下項(xiàng)目結(jié)構(gòu)
├── node_modules ├── public ├── modifyVars.json ├── package.json ├── readme.md ├── .eslintrc ├── .gitignore └── src ├── components │?? ├── ResultItem │?? │?? └── ResultItem.js │?? └── Scroll │?? └── Scroll.js ├── modules │?? └── mobxGitSearch │?? ├── components │?? │?? ├── ResultList │?? │?? │?? └── ResultList.js │?? │?? └── Search │?? │?? └── Search.js │?? └── index.js ├── pages │?? └── index │?? ├── index.js │?? └── routes.js ├── stores │?? └── SearchGitStore.js └── utils └── index.js
在 src 目錄下,有如下子目錄
components(公共組件目錄), 多個(gè)路由頁(yè)面都會(huì)用到的公共組件放在這
modules(路由頁(yè)面目錄),modules 下的每一個(gè)子文件夾代表一個(gè)單一的路由頁(yè)面,比如 Dashboard 頁(yè)面,歡迎頁(yè)面
pages(多頁(yè)面文件夾), 每一個(gè)子文件夾代表一個(gè)單一的SPA 項(xiàng)目,主要存放 SPA 的入口文件
stores(存放 mobx 的 stores)
utils
注意上面說(shuō)的這些目錄已經(jīng)配置在config.resolve.alias,所以,在代碼中不需要指定相對(duì)路徑了
in src/modules/mobxGitSearch/index.js import {shake} from "utils"
not
in src/modules/mobxGitSearch/index.js import {shake} from "../utils"Single And Multi Page
使用 handy-cli 初始化項(xiàng)目后,src/pages 下只有一個(gè) index 文件夾,也就是是個(gè)單頁(yè)應(yīng)用,要想添加新的獨(dú)立的單頁(yè)面很簡(jiǎn)單
例如,在 src/pages 下新建 doule12 文件夾
src ├── pages ?? └── index │ ├── index.js │?? └── routes.js ├── doule12 │── index.js in src/pages/doule12/index.js. ReactDOM.render(double 12
, document.getElementById("root"), ); if (module.hot) { module.hot.accept(() => {}); }
重啟服務(wù)后訪問 localhost:3000/doble12 就可以看到新加的頁(yè)面,而 localhost:3000 是默認(rèn)的單頁(yè)面
Eject如果你想修改一些 webpack 的配置,在項(xiàng)目根目錄,確認(rèn)代碼已經(jīng) commit 后,可以執(zhí)行handy eject來(lái)導(dǎo)出 webpack 的相關(guān)配置
Linter支持 Tslint 和 Eslint
如果在創(chuàng)建項(xiàng)目時(shí)選擇了使用 Typescript,代碼校驗(yàn)就只提供 Tslint,要是沒選 TypeScript,就提供 Eslint 供選擇,Eslint 相關(guān)的提供了eslint with airbnb config 和 eslint with prettier config,推薦使用 airbnb config
要想修改一些校驗(yàn)規(guī)則,可以修改項(xiàng)目根目錄下的.eslintrc 或者 tslint.json
檢測(cè)時(shí)機(jī)可以選擇在代碼保存或者提交代碼的時(shí)候校驗(yàn),為了代碼更快的編譯,在提交時(shí)校驗(yàn)比較好。提交代碼校驗(yàn)的相關(guān)配置在 package.json 中
"husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "linters": { "*.{js,jsx}": [ "eslint --fix", "git add" ] }, "ignore": [ "**/build/**.js" ] }State Management
可供選擇的狀態(tài)管理方式
Normal(the build in Context API)
Mobx
Dva(開發(fā)中))
Use Ant Designhandy-cli 提供了 ant-design 的按需使用加載,創(chuàng)建項(xiàng)目時(shí)選擇了 ant-design 后可以零配置的直接使用
+ import { Pagination } from "antd"; +自定義 ant-design 的樣式主題
如果選擇了使用 ant-design,在項(xiàng)目根目錄下會(huì)有個(gè) modifyVar.json 文件,在這里定義的那些 less 樣式變量,都可以在 modifyVar.json 中賦予新值,保存后,不用重啟服務(wù),自動(dòng)會(huì)重啟,頁(yè)面樣式就變了
Styles And Modules支持 less,sass,stylus and css modules
注意: 如何想使用 css modules,樣式文件要以 .module.css 、 .module.less、 .module.sass、.module.styl作為后綴
Proxy開發(fā)時(shí)要代理到后端服務(wù),在 package.json 中新增 proxy 字段,如下
"proxy": "http://localhost:4000", or proxy: { "/api": { target: "", pathRewrite:{ "api":"" }, changeOrigin: true }, "/foo": { target: " " } }
see more proxy options
最后歡迎試用,提 BUG
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99099.html
摘要:開發(fā)一個(gè)自己的腳手架了解了一些腳手架的工作方式與的基本概念,咱們就可以來(lái)創(chuàng)建一個(gè)屬于自己的腳手架。引言 下面是一個(gè)使用腳手架來(lái)初始化項(xiàng)目的典型例子。 ? showImg(https://user-gold-cdn.xitu.io/2019/5/16/16ac081750971790); ? ? 隨著前端工程化的理念不斷深入,越來(lái)越多的人選擇使用腳手架來(lái)從零到一...
摘要:公司的前端技術(shù)棧是,而筆者之前使用的是,因此正好想利用的自己構(gòu)建個(gè)的管理項(xiàng)目來(lái)加深的使用。會(huì)出現(xiàn)不在尾部的問題。 前言 在日常使用github中,除了利用git進(jìn)行項(xiàng)目版本控制之外,最多的用處就是游覽各式的項(xiàng)目,在看到一些有趣或者有用的項(xiàng)目之后,我們通常就會(huì)順手star,目的是日后再看。但是當(dāng)我們star了許多項(xiàng)目之后,回過頭想找一個(gè)的項(xiàng)目就會(huì)發(fā)現(xiàn),很難在短時(shí)間內(nèi)找到它,官方也并沒有提...
摘要:是一個(gè)前端頁(yè)面制作工具,方便產(chǎn)品,運(yùn)營(yíng)和視覺的同學(xué)迅速開發(fā)簡(jiǎn)單的前端頁(yè)面,從而可以解放前端同學(xué)的工作量。支持恢復(fù)現(xiàn)場(chǎng)功能關(guān)閉頁(yè)面配置不丟失支持操作。提供了一個(gè)方法,用于的拆分。就是發(fā)出的通知,表示應(yīng)該要發(fā)生變化了。 pagemaker是一個(gè)前端頁(yè)面制作工具,方便產(chǎn)品,運(yùn)營(yíng)和視覺的同學(xué)迅速開發(fā)簡(jiǎn)單的前端頁(yè)面,從而可以解放前端同學(xué)的工作量。此項(xiàng)目創(chuàng)意來(lái)自網(wǎng)易樂得內(nèi)部項(xiàng)目nfop中的page...
摘要:?jiǎn)栴}回答者黃軼,目前就職于公司擔(dān)任前端架構(gòu)師,曾就職于滴滴和百度,畢業(yè)于北京科技大學(xué)。最后附上鏈接問題我目前是一名后端工程師,工作快五年了。 showImg(https://segmentfault.com/img/bVbuaiP?w=1240&h=620); 問題回答者:黃軼,目前就職于 Zoom 公司擔(dān)任前端架構(gòu)師,曾就職于滴滴和百度,畢業(yè)于北京科技大學(xué)。 1. 前端開發(fā) 問題 大...
閱讀 2242·2021-11-22 15:29
閱讀 4118·2021-11-04 16:13
閱讀 1002·2019-08-29 16:58
閱讀 349·2019-08-29 16:08
閱讀 1469·2019-08-23 17:56
閱讀 2396·2019-08-23 17:06
閱讀 3174·2019-08-23 16:55
閱讀 2070·2019-08-23 16:22