JavaScript 筆記六:模塊化、模板引擎、同構(gòu)、SSR

都是本人理解,筆記大致概念,不詳細(xì)也并非完全正確,所以僅供參考。


模塊化

為什么要模塊化開發(fā)?
因為前端現(xiàn)在要做的事要多了,代碼越來越大了,依賴也越來越多了,所以不同的依賴的加載,不同開發(fā)人員的協(xié)同,如果不進(jìn)行模塊化的開發(fā),會非常難以維護(hù),組織代碼會非常麻煩,由此,需要模塊化開發(fā),使代碼層次和結(jié)構(gòu)更清晰,使項目維護(hù)變得簡單。

兩種模塊化開發(fā)規(guī)范:

  • AMD
  • CommonJS

詳細(xì)的講解參照這里,以下簡單說明

AMD

AMD 是一個在瀏覽器端模塊化開發(fā)的規(guī)范,它只定義了 define() 函數(shù),可以通過此函數(shù)創(chuàng)建一個模塊,供外部調(diào)用,例如:

define('myModule',['jQuery', 'exports'],function(){
  exports.abc = 123;
  exports.test = function(){
    console.log('haha')
  }
});

CommonJS

CommonJS 是服務(wù)器端模塊的規(guī)范,Node.JS首先采用了JS模塊化的概念。
根據(jù)CommonJS規(guī)范,一個單獨的文件就是一個模塊。每一個模塊都是一個單獨的作用域,也就是說,在該模塊內(nèi)部定義的變量,無法被其他模塊讀取,除非定義為global對象的屬性,它使用 module.exports 來輸出模塊

var i = 1;
var max = 30;

module.exports = function () {
  for (i -= 1; i++ < max; ) {
    console.log(i);
  }
  max *= 1.1;
};

模板引擎

在如今的開發(fā)中,前后分離越來越多,所以數(shù)據(jù)與界面分離的也越來越重要,所以模板引擎的分量也越來越重。
簡單來說,模板引擎就是為了讓動態(tài)頁面渲染的時候,可以簡化字符串的拼接操作的東西。
模板引擎有很多種,舉 vue 的渲染為例:

<template>
  <div>
    <div v-for="(item, i) in list" :key="i">
      {{ item.name }}的年齡是:{{ item.age }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        {
          name: '小明',
          age: 10
        },
        {
          name: '小張',
          age: 11
        },
        {
          name: '小王',
          age: 12
        }
      ]
    };
  }
};
</script>

template 中, v-for 、 {{}} 就是模板引擎的語法,最終渲染出來的HTML如下:

<div>
  <div>小明的年齡是:10</div>
  <div>小張的年齡是:11</div>
  <div>小王的年齡是:12</div>
</div>

現(xiàn)在的模板有很多,如何選擇和選擇哪個請參考此文章。


同構(gòu)

同構(gòu)是指同開發(fā)一個可以跑在不同的平臺上的程序。 例如開發(fā)一段 js 代碼可以同時被基于node.js 開發(fā)的web server 和瀏覽器使用。

同構(gòu)的詳情解釋參照此文章:點此前去

SSR 服務(wù)端渲染

因為HTML/CSS/JS本質(zhì)就是可被瀏覽器解析并執(zhí)行的字符串,所以服務(wù)端渲染的本質(zhì)是在服務(wù)端將業(yè)務(wù)邏輯處理,將站點的代碼和結(jié)構(gòu)加工完成,將成品的字符串返回,這就是 SSR 服務(wù)端渲染。

服務(wù)端渲染的優(yōu)勢很明顯,因為在服務(wù)端完成了邏輯和業(yè)務(wù),所以減少了請求,不需要先下載一堆 js 和 css 后才能看到頁面,對首屏性能提升很大。

前后端的渲染各有利弊,在此不做描述,可參考此文章。

模板引擎、同構(gòu)、服務(wù)端渲染的知識點是一體的,所以細(xì)細(xì)研究一下就能了解三者。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容