隨著前端體積越來越大,功能越來越豐富,這時候就需要將前端工程化,而webpack就是用于將前端各種文件打包起來。一個簡單的webpack應(yīng)該包含以下幾個概念
適用情況
首先說明,此情況不具備普遍性。若你的情況與筆者類似那么希望這篇文章能夠幫到你。
我的項目情況是這樣的:用node.js做后臺,ejs做模板引擎(即整個頁面是一個ejs文件)由node.js將數(shù)據(jù)渲染完成后,再將完整頁面返回給用戶。
那么這樣做會遇到的問題:
1. 本項目沒有html頁面,ejs的作用也不是引入公共的組件,直接就是一個完整的頁面,用webpack中處理ejs文件的loader返回的是一個函數(shù),故會產(chǎn)生問題
2.由于node.js配置了靜態(tài)資源目錄public,而視圖目錄與之同級,webpack在處理圖像等靜態(tài)資源目錄的路徑的時候會產(chǎn)生問題
3.如果使用publicpath 那么nodejs在運行的時候就會找不到資源,因為設(shè)置了靜態(tài)資源的目錄
如果你也遇到了類似的問題,希望你能在本文中找到解決方法。
這里多說一句:不要覺得我的項目很奇怪,因為我當時寫的時候,知識儲備不足,等到后面發(fā)現(xiàn)不妥的時候,為時已晚。
改起來太麻煩,所以將錯就錯了。。。。。。
解決方案
1.處理ejs
我在各個論壇,官網(wǎng)搜尋良久,始終沒能找到,能處理我這種情況的loader。
沒有辦法之下,只能換一個思路,將ejs文件先轉(zhuǎn)為html
首先要修改文件,那么就要修改服務(wù)器的模板引擎(這里是我的app.js)
那么要修改成什么呢?我要讓nodejs使用ejs模板引擎,但是使用html文件來渲染
這里我們要用的是express中的app.engine 來注冊一個引擎
代碼如下:
app.set('views',path.join(__dirname,'views'));//設(shè)置模板引擎的目錄 app.engine('html', require('ejs').renderFile); app.set('view engine','html');