在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react16 服務端渲染與wabpack3 code-splitting 遇到

react16 服務端渲染與wabpack3 code-splitting 遇到的問題

希望實現(xiàn)react服務端渲染和按需加載js

遇到的問題:

服務端運行的時候,需要使用babel的dynamic-import-nodeplugins進行轉換import().then().catch() 語法,否則會報import('../views/user')的語法錯誤
但是webpack打包的時候又需要去掉dynamic-import-node插件才能正確生成 user的chunk,否則只會打包成一個文件

請問該如何解決?或者你們是怎么實現(xiàn)的?

代碼:

import asyncComponent from './asyncComponent'

const AsyncUser = asyncComponent(import('../views/user')) 

//省略...

<Route exact path="/user" component={AsyncUser}/>

我是照著這篇文章做的 https://serverless-stack.com/...
并且已經(jīng)手動在webpack打包時去掉dynamic-import-node插件,打包完手動添加該插件再啟動服務器,的方法證實只要解決了這個問題就可以實現(xiàn)最終的效果了

回答
編輯回答
墻頭草

我以前的做法是這樣的:
在componentDidMount里面異步加載組件(服務端渲染不會執(zhí)行到這里), 把加載到的組件賦值到state

2018年9月17日 22:08
編輯回答
不討囍

由于使用typescript,所以很久沒用babel了,我沒有使用樓主您的這種解決方案,我采用的是react-router v4的官方解決方案,使用bundle-loader來進行代碼分片的,可以正常進行ssr和打包,詳細參見:code-splitting,希望對您有幫助!

2018年2月23日 02:05
編輯回答
短嘆

目前換了一種實現(xiàn)方案,雖然多了一些代碼:寫兩個不同的router文件,分別用于server和client

server_router.js

import User from '../views/user'

//省略...

<Route exact path="/user" component={User}/>

client_router.js

import asyncComponent from './asyncComponent'

const AsyncUser = asyncComponent(import('../views/user')) 

//省略...

<Route exact path="/user" component={AsyncUser}/>

這樣由于server和webpack使用的不同的文件,題目的問題就不存在了

2017年7月27日 05:35