工程化,模塊化,組件化,規范化

前端講究 工程化,模塊化,組件化,層層遞進。

一、工程化

工程化是整個工程的結構、樣式和動作分離,工程化是一種思想而不是某種技術(當然為了實現工程化我們會用一些技術)。各種規范、技術選型、項目構建優化,JS/CSS模塊機、UI組件化等。
前端工程化就是用做工程的思維看待和開發自己的項目,而不再是直接擼起袖子一個頁面一個頁面開寫。

  1. 在配置初始項目文件結構和基本文件依靠命令行(工具)自動生成, 代碼構建: webpack,腳手架:*cli,用于創建項目目錄結構。
  2. 確定代碼規范,縮進,換行,以及各種預編譯工具less,coffee,保證輸出代碼的標準一致
  3. 對JS文件是否規范化,進行單元測試。不用手動復制到jshint上去檢測,現在配置grunt監聽文件變動自動檢驗顯示檢驗結果還可以通過配置構建工具自動刷新瀏覽器實現文件實時變動監聽
  4. 配置一下 grunt,gulp可以做自動任務,實時編譯,并且監測文件改變而做出響應
  5. 用工具自動打包上傳到服務器

二、模塊化

頁面由多個模塊作用形成,互相不干擾,用的時候再加載,可引入各種其他模塊(js,css),擴展性高。模塊化是將之前一籠統的頁面分成由若干個模塊作用形成的頁面,這個過程(思想)叫模塊化。

  1. 定義模塊
    根據CommonJS1規范,一個單獨的文件就是一個模塊。每一個模塊都是一個單獨的作用域,也就是說,在該模塊內部定義的變量,無法被其他模塊讀取,除非定義為global對象的屬性。
  2. 模塊輸出
    模塊只有一個出口,module.exports對象,我們需要把模塊希望輸出的內容放入該對象。
  3. 加載模塊
    加載模塊使用require方法,該方法讀取一個文件并執行,返回文件內部的module.exports對象。

三、組件化

組件化將頁面視為一個容器,頁面上各個獨立部分例如:頭部、導航、焦點圖、側邊欄、底部等視為獨立組件,不同的頁面根據內容的需要,去盛放相關組件即可組成完整的頁面。
將之前一籠統的頁面改善為一個個單獨的組件形成的頁面,過程(思想)叫組件化。

規則

  • 頁面上的每個獨立的、可視/可交互區域視為一個組件;
  • 每個組件對應一個工程目錄,組件所需的各種資源都在這個目錄下就近維護;
    由于組件具有獨立性,因此組件與組件之間可以 自由組合;
  • 頁面只不過是組件的容器,負責組合組件形成功能完整的界面;
  • 當不需要某個組件,或者想要替換組件時,可以整個目錄刪除/替換。

保證組件的封閉性。因為JS方面是模塊化的。組件的功能界限問題。也就是什么是應該在組件內部實現,什么是應該由組件的調用者來實現的。對組件功能界限的定義是只負責UI相關的功能,所有的業務邏輯都是從調用者傳遞過的。也即是寫在param.js。所以param.js文件是非常重要的一個文件,里面基本包涵了這個頁面所有業務處理邏輯。很顯然,隨著頁面業務邏輯變的復雜,js文件將會變得越來越大。沒關系,把不同的組件參數分拆到不同的js文件里面去實現,然后建個專門的文件夾把它們組織起來。

四、規范化

由具體的前端框架而定目錄結構,目錄命名有約定俗成的意義。如:
1、src文件夾存放的是所有的的源代碼和其他靜態資源(比如圖片,iconfont)。
2、dist文件夾存放的是所有編譯后的代碼。
3、build文件夾存放的是所有工程化所需要的代碼。
4、document文件夾當然存放的文檔。




PS:模塊化組件化一個最直接的好處就是復用,同時我們也應該有一個理念,模塊化和組件化除了復用之外還有就是分治,我們能夠在不影響其他代碼的情況下按需修改某一獨立的模塊或是組件,因此很多地方我們及時沒有很強烈的復用需要也可以根據分治需求進行模塊化或組件化開發。


  1. 因為在網頁端沒有模塊化編程只是頁面JavaScript邏輯復雜,但也可以工作下去,在服務器端卻一定要有模塊,所以雖然JavaScript在web端發展這么多年,第一個流行的模塊化規范卻由服務器端的JavaScript應用帶來,CommonJS規范是由NodeJS發揚光大,這標志著JavaScript模塊化編程正式登上舞臺。 ??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278724.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278724.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux壓縮和解壓縮_Linux QuickTip:一步下載和解壓縮

linux壓縮和解壓縮Most of the time, when I download something it’s a file archive of some kind – usually a tarball or a zip file. This could be some source code for an app that isn’t included in Gentoo’s Portage tree, some documentation for an internal …

Spark架構與作業執行流程簡介

2019獨角獸企業重金招聘Python工程師標準>>> Spark架構與作業執行流程簡介 博客分類: spark Local模式 運行Spark最簡單的方法是通過Local模式(即偽分布式模式)。 運行命令為:./bin/run-example org.apache.spark.exam…

Spring boot整合Mongodb

最近的項目用了Mongodb,網上的用法大多都是七零八落的沒有一個統一性,自己大概整理了下,項目中的相關配置就不敘述了,由于spring boot的快捷開發方式,所以spring boot項目中要使用Mongodb,只需要添加依賴和…

nodejs和Vue和Idea

文章目錄Vue環境搭建Idea安裝Idea中配置Vue環境Node.js介紹npm介紹Vue.js介紹[^3]Idea介紹Vue環境搭建 概述:vue環境搭建:需要npm(cnpm),而npm內嵌于Node.js,所以需要下載Node.js。 下載Node.js&#xff1…

Spring MVC上下文父子容器

2019獨角獸企業重金招聘Python工程師標準>>> Spring MVC上下文父子容器 博客分類: java spring 在Spring MVC的啟動依賴Spring框架,有時候我們在啟動Spring MVC環境的時候,如果配置不當的話會造成一些不可預知的結果。下面主要介紹…

12.7 Test

目錄 2018.12.7 TestA 序列sequence(迭代加深搜索)B 轟炸bomb(Tarjan DP)C 字符串string(AC自動機 狀壓DP)考試代碼AC2018.12.7 Test題目為2018.1.4雅禮集訓。 時間:4.5h期望得分:010010實際得分:010010 A 序列sequence(迭代加深搜索) 顯然可…

word文檔中統計總頁數_如何在Google文檔中查找頁數和字數統計

word文檔中統計總頁數Whether you’ve been given an assignment with a strict limit or you just like knowing how many words you’ve written, Google Docs has your back. Here’s how to see exactly how many words or pages you’ve typed in your document. 無論您是…

vue 入門notes

文章目錄vue一、js基礎二、封裝緩存三、組件1、組件創建、引入、掛載、使用2、組件間的傳值- 父組件主動獲取子組件的數據和方法(子組件給父組件傳值):- 子組件主動獲取父組件的數據和方法(父組件給子組件傳值)&#x…

spring集成 JedisCluster 連接 redis3.0 集群

2019獨角獸企業重金招聘Python工程師標準>>> spring集成 JedisCluster 連接 redis3.0 集群 博客分類&#xff1a; 緩存 spring 客戶端采用最新的jedis 2.7 1. maven依賴&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifact…

html-盒子模型及pading和margin相關

margin: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>* {margin: 0;padding: 0;}/*margin 外邊距 元素與其他元素的距離&#xff08;邊框以外的距離&#xff09;一…

火狐瀏覽器復制網頁文字_從Firefox中的網頁鏈接的多種“復制”格式中選擇

火狐瀏覽器復制網頁文字Tired of having to copy, paste, and then format links for use in your blogs, e-mails, or documents? Then see how easy it is to choose a click-and-go format that will save you a lot of time and effort with the CoLT extension for Firef…

vscode配置、使用git

文章目錄一、下載、配置git二、vscode配置并使用git三、記住密碼一、下載、配置git 1、git-win-x64點擊下載后安裝直接安裝&#xff08;建議復制鏈接用迅雷等下載器下載&#xff0c;瀏覽器太慢&#xff0c;記住安裝位置&#xff09;。 2、配置git環境變量&#xff1a; 右鍵 此…

BTrace功能

2019獨角獸企業重金招聘Python工程師標準>>> BTrace功能 一、背景 在生產環境中可能經常遇到各種問題&#xff0c;定位問題需要獲取程序運行時的數據信息&#xff0c;如方法參數、返回值、全局變量、堆棧信息等。為了獲取這些數據信息&#xff0c;我們可以…

.NET(c#) 移動APP開發平臺 - Smobiler(1)

原文&#xff1a;https://www.cnblogs.com/oudi/p/8288617.html 如果說基于.net的移動開發平臺&#xff0c;目前比較流行的可能是xamarin了&#xff0c;不過除了這個&#xff0c;還有一個比xamarin更好用的國內的.net移動開發平臺&#xff0c;smobiler&#xff0c;不用學習另外…

如何在Vizio電視上禁用運動平滑

Vizio維齊奧New Vizio TVs use motion smoothing to make the content you watch appear smoother. This looks good for some content, like sports, but can ruin the feel of movies and TV shows. 新的Vizio電視使用運動平滑來使您觀看的內容顯得更平滑。 這對于某些內容(例…

無服務器架構 - 從使用場景分析其6大特性

2019獨角獸企業重金招聘Python工程師標準>>> 無服務器架構 - 從使用場景分析其6大特性 博客分類&#xff1a; 架構 首先我應該提到&#xff0c;“無服務器”技術肯定有服務器涉及。 我只是使用這個術語來描述這種方法和技術&#xff0c;它將任務處理和調度抽象為與…

ES6實用方法Object.assign、defineProperty、Symbol

文章目錄1.合并對象 - Object.assign()介紹進階注意用途2.定義對象 - Object.defineProperty(obj, prop, descriptor)3.新數據類型- Symbol定義應用1.合并對象 - Object.assign() 介紹 assign方法可以將多個對象&#xff08;字典&#xff09;&#xff0c;語法&#xff1a;Obj…

Enable Authentication on MongoDB

1、Connect to the server using the mongo shell mongo mongodb://localhost:270172、Create the user administrator Change to the admin database: use admindb.createUser({user: "Admin",pwd: "Admin123",roles: [ { role: "userAdminAnyDataba…

windows驅動程序編寫_如何在Windows中回滾驅動程序

windows驅動程序編寫Updating a driver on your PC doesn’t always work out well. Sometimes, they introduce bugs or simply don’t run as well as the version they replaced. Luckily, Windows makes it easy to roll back to a previous driver in Windows 10. Here’s…

運行tomcat報Exception in thread ContainerBackgroundProcessor[StandardEngine[Catalina]]

解決方法1&#xff1a; 手動設置MaxPermSize大小&#xff0c;如果是linux系統&#xff0c;修改TOMCAT_HOME/bin/catalina.sh&#xff0c;如果是windows系統&#xff0c;修改TOMCAT_HOME/bin/catalina.bat&#xff0c; 在“echo "Using CATALINA_BASE: $CATALINA_BASE&q…