umi.js的document.ejs中如何引用配置變量

如何在document.ejs模板中引用.umi.js配置變量

document.ejs模板可以爲umi.js項目配置最爲基本的配置之一,可以理解爲index.html的入口。
我們知道原生的react組件,都是需要掛載到html中的指定dom元素中的。umi.js是基於react的,儘管基於umi.js來開發react項目,使代碼的邏輯更清晰,模塊化更透徹,可維護性更好,但是,本質還是react。

所以,我們還是能找到,且必須能找到一個react根模塊顯示的掛載到html的dom元素中。那麼,我們可以在這個document.ejs只找到這個掛載點,如下:

  <body>
    <div id="root"></div>
  </body>

上面的有唯一的一個<div id="root">,這就是整個react的項目的根組件掛載點

進入正題

react本質還是js,任何前端項目本質還是依賴html,js,css,這些幾乎沒變過,所以,有時我們需要想以往的項目一樣,引入一些靜態資源(js、css等),或者,設置一些<head>中的共用dom元素如<meta>,那麼就可以在這個doument.ejs模板中設置。

然而,有時我們希望,從別的配置文件中,引入某些變量到doument.ejs,以便開發或部署,那麼在umi.js項目中如何實現呢?

在這裏,umi.js提供的解決方案是,看代碼如下:

<!-- document.ejs -->
<script src="<%= context.config.publicPath %>/lib/my.js"></script>

那麼context.config又是從哪裏來的呢,噹噹噹…,當然就是從 .umi.js來的,我們看一下:

// .umi.js
export default {
  publicPath: '/myPublic',
  base: basePath,
  hash: true,
  ignoreMomentLocale: true,
  targets: { ie: 9 },
  treeShaking: true,
  ...
}

看到了吧,在這個.umi.js的配置文件的所有變量,在document.ejs中都可以通過context.config來提取
提取的格式,只需要加上<%=context.config %> 就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章