1. 程式人生 > >WEB元件化思想

WEB元件化思想

JS不同層的職責和API

這裡寫圖片描述

  1. 瀏覽器低層分層大概也可以分為DOM / BOM / STYLE 樣式 /Canvas 2D / WebGL / SVG

瀏覽器底層面臨的一些問題

  1. JS核心語法層面薄弱
  2. JS原生API不好用 (ajax , cookie ,)
  3. 瀏覽器相容問題 (IE9微軟用了自己一套的東西,搞事情?)

對過時瀏覽器的相容性問題是沉重的知識包袱, 關鍵是這種知識沒有延續性,會影響你學習和使用新技術

框架core

Prototype,YUI,Dojo,jquery

框架元件

封裝瀏覽器原生API,抽象成元件

input text checkbox radio select

沒有日曆選擇器,富文字編輯器,Excuse me?

  • 框架元件->高度重用
    • 獨立元件底層(原生js層,不用依賴框架)
    • 定製元件(小白->大牛寫)
    • 框架通用元件(大牛寫)

這裡寫圖片描述

元件定義和載入

js部分
var H5ComponentBase = function (name,cfg ) {屬性+方法}
css部分
啪啪啪啪啪啪(一陣敲鍵盤聲音)

然後引入檔案,例項化物件

var cfg = {引數}
var h5 = new H5ComponentBase('bob',cfg);
            $('.iphone').append(h5);

多個元件打架(變數衝突)

這裡寫圖片描述

解決方法:

  • css通過加字首形成名稱空間(tab_view)
  • JS在函式內部定義,然後返回出去(有人說不過在函式內部定義會增加解析負擔)
  • JS通過匿名空間隔開公有私有,將匿名函式內部的函式賦值給window下的屬性暴露出去。閉包的經典用法

這裡寫圖片描述

元件依賴關係(模組化)

試問,如果我們想增加一個有依賴關係的元件怎麼辦?
這裡寫圖片描述


  • 問題:
    • 需手動處理元件間的依賴關係。
    • 載入項太多,破壞頁面的整潔度。
      所以require.js就誕生了。
js核心語法據說一個星期就設計出來了,所以語法糖它不甜啊,蘋果味的(面向物件), 荔枝味的(邏輯層),西紅柿味的(模組化)->js框架,js模組化(require)
require.js就是很好的去模擬包,define(定義模組),return(暴露模組),require()定義入口

require.js會假定元件模組與main.js在同一個目錄
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
簡單提一下js模組化規範
  • AMD(Asynchronous Module Definition)非同步模組規範
  • CommonJS,伺服器端模組規範,Node.js
  • UMD通用模組規範,相容了AMD和CommonJS
  • CMD是SeaJS 在推廣過程中對模組定義的規範化產出
    • CMD推崇依賴就近,AMD推崇依賴前置。
    • 對於依賴的模組AMD是提前執行,CMD是延遲執行。
    • AMD的API預設是一個當多個用,CMD嚴格的區分推崇職責單一。
升級

ES6原生 import export 配合 webpack(留坑)

深入(面試問題)

  • js的模組化有哪些方式呢?(立即執行匿名函式、名稱空間、sea.js、require.js、es6的import/export)
  • require.js和webpack的打包原理分別是什麼樣的?
  • 為什麼require.js採用這種方式而webpack採用那種方式?

自定義事件

跳出原生事件的限制,提高封裝的抽象層級。本質是觀察者模式
簡單回撥存在的問題:
1 只能繫結一個回撥函式 ( 只有一個位置傳參 ,一個引數為回撥函式.)
2 回撥的繫結時間和元件例項化時間耦合在一起.(傳入回撥函式的時機是一致的,沒有靈活性.)
關鍵的問題是 沒有將事件抽象分離出來

連綴語法

這裡寫圖片描述
這裡寫圖片描述

發展

Promise優雅的元件化

這裡寫圖片描述

相關推薦

WEB元件思想

JS不同層的職責和API 瀏覽器低層分層大概也可以分為DOM / BOM / STYLE 樣式 /Canvas 2D / WebGL / SVG 瀏覽器底層面臨的一些問題 JS核心語法層面薄弱 JS原生API不好用 (ajax , c

前端成長必經之路之元件思維與技巧 Web元件開發

1-1課程導學.mp42-1環境及知識準備.mp43-1 技術選型分析.mp43-2 工程構建安裝.mp44-1 css模組化設計.mp44-2 css模組化設計(程式碼).mp44-3 js元件化及自適應mp4.mp44-4 spa設計.mp44-5 構建工具及上線指導.mp45-1 首頁-抽象元

前端元件思想

1.開篇   先說說為什麼要寫這篇文章吧:不知從什麼時候開始,大家相信前端摩爾定律:“每18個月,前端難度會增加一倍”。我並不完全認可這個數字的可靠性,但是這句話的本意我還是非常肯定的。   是的,前端越來越簡單了,但也越來越複雜了—簡單到你可以用一個Git

【平臺+原創】SOA元件思想在專案中的落地(Primeton EOS)

1 普元平臺的內涵 1.1 層次化 分層架構是降低軟體複雜度的最常用手段之一,從軟體的可變性管理和降低應用複雜度來講,軟體平臺必須要層次化,基於技術平臺搭建業務平臺,進行業務元件積累,再基於業務平臺進行業務應用開發。普元平臺提供了強大的技術平臺支撐,提供了統一的應用軟體架構和流程引擎,從而收斂了技術

2017年試試Web元件框架Omi

Open and modern framework for building user interfaces. 如果想使用Omi框架或者開發完善Omi框架,可以訪問 Omi使用文件 如果你想獲得更佳的閱讀體驗,可以訪問 Docs Website 如果你懶得搭建專案腳手架,可以試試 omi

React,用元件思想寫前端程式碼

前陣子嘗試用React開發了一個專案的前端,寫起來還算是流暢。將頁面中各模組進行分割並形成元件之後,管理起來更加的方便,程式碼的可讀性也相對於傳統的麵條式程式設計有很大的提高。React相對於Angular來說,我個人認為是更加輕量化的,它更注重於MVC中的V。

Vue起步_使用元件思想修改TodoList

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello World</title>

vue框架的設計思想--漸進、輕量、資料驅動、元件、自底向上

vue是一套用於構建使用者介面的漸進式框架 參考:https://blog.csdn.net/tangxiujiang/article/details/79594860 https://blog.csdn.net/weixin_41049850/article/details/79431

vue輕量高效的前端元件方案以及MVC MVVM思想

近些年來前端的發展的趨勢: 舊瀏覽器逐漸被淘汰,移動端需求增加,舊瀏覽器是指ie6-ie8是不支援es5的,而vuejs利用了Object.defineProperty特性,es5在移動端和pc端也都是支援的,所以vuejs可以在移動端和pc端充分發揮自己的長處,架構從傳統後臺MVC向REST api+前端M

一個簡單的用ASP.NET/C#開發的元件Web應用程式(附原始碼)

==============================================================================1)建立一個類來處理使用者登入,將該類編譯成一個裝配件(assembly),併發布到站點的bin目錄下。========

前端為什麼要使用元件思想,通過一個例項來分析

在平時專案中,為什麼我們都會採用元件化的思想去編寫程式碼? 其實的原因很簡單!!! 我們在寫程式碼的時候,寫完以後發現這個程式碼會出現在其他地方,想要複用,或者同事感興趣,想使用這個程式碼。這個時候我們就需要通過元件化來實現程式碼的複用了,否則工作量真

Web應用的元件開發

基本思路 1. 為什麼要做元件化?   無論前端也好,後端也好,都是整個軟體體系的一部分。軟體產品也是產品,它的研發過程也必然是有其目的。絕大多數軟體產品是追逐利潤的,在產品目標確定的情況下,成本有兩個途徑來優化:減少部署成本,提高開發效率。   減少部署成本的方面,業

Web應用的元件(一)——基本思路

1. 為什麼要做元件化? 無論前端也好,後端也好,都是整個軟體體系的一部分。軟體產品也是產品,它的研發過程也必然是有其目的。絕大多數軟體產品是追逐利潤的,在產品目標確定的情況下,成本有兩個途徑來優化:減少部署成本,提高開發效率。 減少部署成本的方面,業界研究得非常多,比

【機器學習】隨機初始思想神經網絡總結

算法 代價函數 所有 -i 如果 中間 相同 決定 最小  之前在進行梯度下降時,通常我們讓Θ等參數為0,這樣的做法在邏輯回歸中還是可行的,但是在神經網絡中,如果你讓所有的參數都初始化為0,這將意味著第二層的所有的激活單元都會有相同的值,同理,如果我們初始化所有的參數都是一

Vue.js的組件思想 —下

通信 emp 模板 直接 應該 clas 不能 總結 並且 一、組件間的通信 組件實例的作用域是孤立的;這意味著不能並且不應該在子組件的模板內直接引用父組件的數據。但是父子組件之間需要通信:父組件要給子組件傳遞數據,子組件需要將它內部發生的事情告知給父

Vue.js的組件思想--上

str 多個 文件 內容 生成 調用 單獨使用 只需要 one Vue.js的組件化思想--上 一、Vue中的組件 Vue視圖層的靈魂 — 組件化 組件(Component)是 Vue.js 最強大的功能之一; 組件可以擴展 HTML 元素

Vue.js-資料-組件思想 —上

忽略 都是 bte rdo 有一個 ron 生效 dom cxf 一、Vue中的組件 Vue視圖層的靈魂 — 組件化 組件(Component)是 Vue.js 最強大的功能之一; 組件可以擴展 HTML 元素,封裝可重用的代碼; 在較高層面上,組件是自定

軟件設計要素初探:組件思想

壓力 解決 一起 .com 基於組 接口 商品 具體實現 .html 在 “軟件設計要素初探” 一文,嘗試從軟件設計的整體角度,綜合討論了軟件設計的各種要素。本文討論用於系統劃分的組件化思想。 概述 將整個系統劃分為若幹正交的緊密關聯的子系統,以及高內聚低耦合的小而美的模

React組件-2.組件思想(慕課)

分享 pan .com span bsp mage wid inf 技術 一:組件與函數 二:制作HelloWorld組件 React組件-2.組件化思想(慕課)

關於前端元件、狀態管理規範化的思考

蘇格團隊 作者:Tomey 一、開篇 說起前端元件化是這幾年老生常談的話題,筆者就不在這裡對前端元件化思想的發展史、優劣做詳細的介紹。今天主要與大家分享一下,筆者在開發中從初期的小專案,到後期的專案功能迭代,功能模組越來越多,專案越來越大,元件化規範制定不夠完善,多人團隊協作