國際化官網vue
|-- .next |-- components --------------- 組件 |-- lang --------------------- 多語言 |-- pages -------------------- 頁面 |-- scripts ------------------ 腳本文件 |-- static ------------------- 靜態資源 |-- utils -------------------- 自定義或其餘庫以及封裝文件 |-- .babelrc |-- .eslintignore |-- .eslintrc |-- .gitignore |-- .prettierrc |-- next.config.js |-- package.json |-- prettier.config.js |-- README.md |-- server.js |-- yarn.lock
多語言:react-intl樣式:起初使用的是 jss,後來改爲了引入外部樣式文件react
http 請求:data-fetchgit
UI 庫:antd-design-lessgithub
路由:withRouterexpress
全部示例均參考自 next 官方json
痛點:babel
- 國際化語言切換
- 自定義字體不生效
- 樣式使用 import 引入到對應 jsx 文件,發佈到生產環境以後樣式不立馬生效
- antd-design 表單樣式發佈到生產環境同上
在 next.config.js 文件中增長用戶自定義樣式配置代碼antd
const themeVariables = lessToJS(fs.readFileSync(path.resolve(__dirname, './static/style/antd-custom.less'), 'utf8'));
不在單個文件中引入相應的樣式文件,而是把樣式文件都在用戶自定義樣式文件先引入less
在 .babelrc 文件將 antd 庫做爲插件(plugins)引入,在 static 文件夾下新建 style 文件夾(存放樣式文件),新建 index.less 文件,在文件中引入 antd 樣式frontend
@import '~antd/dist/antd.less';
獲取當前 URL 參數:在鉤子 componentDidMount 裏面獲取
``` componentDidMount() { const search = window.location.search; console.log(search); // 獲取 url ? 後帶的參數 } ```
不要自定義靜態文件夾的名字,只能叫 static ,由於只有這個名字 Next.js 纔會把它看成靜態資源。(出自文檔: next文檔)
看過那麼多別人寫的 react 項目,這是第一個本身上手的實戰項目,還用到了 next.js 作服務端渲染。雖然項目很簡單,幾乎純展現,難度係數較低,但對於 react 入門級小白而言,第一次參與 react 實戰,仍是從零到一本身搭建(固然,期間有大佬相助),仍是能有所收穫。
由於以前寫 vue 項目的時候學到了該如何的劃分組件,怎麼定義組件,因此對於頁面和組件拆分幾乎沒有問題。這次實戰,對 jsx 語法有了更進一步的瞭解,可是對 react 的生命週期還不是很瞭解,至少沒有在這次項目中體現。對於組件間的傳值,會用大於理解。對於 react 高階組件,有待深刻體驗。