一直以來,很多新手都會經(jīng)常問,我學完了基礎知識,如何做項目?平時在公司工作都是做些什么?其實我想說,只要你找對方法,隨便打開一個網(wǎng)站,都能是你的項目。
秀山土家族苗族ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
這里指的面向?qū)ο蟛粏螁芜m用于javascript,也適用其他語言。
萬物皆對象,所以,任何事物都是有特征(屬性)和動作(方法)的,一般拿到一份需求分檔,或者你瀏覽一個網(wǎng)頁看到一個畫面的時候,腦子里就要有提煉出來的屬性和方法的能力,那你才是合格的。
例如一個購物車例子
估計很多人都做過購物車,我就不賣關子,做任何東西,先宏觀思考*,然后再去處理細節(jié),然后組裝起來,就好像組裝汽車的道理一樣。例如上圖,紅色的就是屬性,黃色的就是方法,抽象出屬性和方法,其他都是死的。
假如是剛學前端的同學,可能就會用這種全局化的變量,也叫面向函數(shù)編程,缺點就是很亂,代碼冗余
//商品屬性 var name = 'macbook pro' var description = ''。' var price = 0; //商品方法 addOne:funcion(){alert('增加一件商品')}, reduceOne:function(){alert('減少一件商品')}, //購物車屬性 var card = ['macbook pro' ,'dell'] var sum = 2, var allPrice = 22000, //購物車方法 function addToCart:function(){ alert('添加到購物車') } addToCart()
假如是單例模式的思想,可能會這樣做,但這樣還是不太好。對象太多,可能造成變量重復,項目小還可以接受
var product={ name:'macbook pro', description:'', price:6660, addOne:funcion(){}, reduceOne:function(){}, addToCart:function(){ alert('添加到購物車') } } /*購物車*/ var cart={ name:'購物車', products:[], allPrice:5000, sum:0 }
假如是有一定經(jīng)驗的人,可能會這樣子做。
function Product(name,price,des) { /*屬性 行為 可以為空或者給默認值*/ this.name = name; this.price = price; this.description = des; } Product.prototype={ addToCart:function(){ alert('添加到購物車') } addOne:funcion(){}, reduceOne:function(){}, /*綁定元素*/ bindDom:function(){ //在這里進行字符串拼接, //例如 var str = '' str +='<div>價格是:'+this.privce+'</div>' return str }, } function Card(products,allPrice,sum) { /*屬性 行為 可以為空或者給默認值*/ this.products = products; this.allPrice = allPrice; this.sum = sum } Product.prototype={ getAllPrice:function(){ alert('計算購物車內(nèi)商品總價') } }
通過創(chuàng)建各種對象例如macbook
//后臺給的數(shù)據(jù) var products= [ {name:'macbook',price:21888}, {name:'dell',price:63999} ] var str = '' for(var i = 0,len=products.length;i<len;i++) { var curName = products[i].name var curName = new Product() curName.name=products[i].name; curName.price=products[i].price; str+= curName.bindDom() }
上面這種方式,就降低了耦合性,不管你用什么語言,還是任何javascript框架(模板引擎,jquery,react等),都是脫離不開上面那段代碼的思想,
再來說說,現(xiàn)在mvvm的模式,例如vue,他們不需要獲取dom,那么渲染的時候,定義好一個一個的組件就行了。屬性全部用{{}}定義好,剩下的就是替換模板,就解決了。
data:{ name ='', price='', description = '' }, methods:{ addToCart:function(){ alert('添加到購物車') } addOne:funcion(){}, reduceOne:function(){}, }
然后page級組件引入這個產(chǎn)品組件,然后循環(huán)這個產(chǎn)品組件就好了。
組件化的好處
將代碼分類管理
代碼清晰
容易維護
容易發(fā)現(xiàn)問題
代碼可讀性好
易于團隊化協(xié)作
當然這篇文章是為了鍛煉抽象化思維的能力,雖然跟javascript模塊化的歷程也有點搭邊,我還希望大家在瀏覽任何網(wǎng)頁的時候,去分析一下,這個模塊你來設計,你會怎么設計,能做到解耦和,版本可迭代可維護,利于團隊開發(fā)嗎?
如有不對,請指正
當前名稱:javascript面向?qū)ο髮崙?zhàn)思想分享
文章路徑:http://jinyejixie.com/article6/jdosig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、網(wǎng)站設計、云服務器、Google、網(wǎng)站排名、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)