一、前言
2018年12月底,感覺做事情不是太順暢。。。就當是運氣不好吧。。。XX總喜歡把自己的問題——推拖到別人身上,什么事情都覺得自己的就是完美(都是別人的問題),你這么能,你咋不上天呢。。。
已是2019年了,祝大家新年快樂,開開心心,心想事成,萬事如意。。。。。。直接進入正題哈。。。
前端開發大家熟知非常傳統的開發模式,像HTML/CSS/JS 一鍋燉的方式。雖然可以較快速、無規范開發。。。
但對於代碼編程可維護性、可讀性、可遷移性等方面來說簡直就是災難。。。於是便有了模板式的開發&&組件化編程方式的出現。。。
二、模板式的開發
Vue 自定義父子組件通信模板渲染, 自定義的 <book-item> </book-item> 標簽將被替換成自定義的模板 <li></li> 輸出。。。 代碼請點擊
<div id="app"> <ul> <book-item v-for="book in booksList" v-bind:book="book" v-bind:key="book"></book-item> </ul> </div> <script> Vue.component("book-item",{ "props":["book"], //父組件向子組件傳遞數據 template : "<li>{{book.id}}-{{book.title}}<li>" //自定義模板 }) const app = new Vue({ el:"#app", data:{ //數據 booksList: [ { id: 1, title: "Vue Component自定義組件模板" }, { id: 2, title: "Webpack前端資源模塊化管理和打包工具" }, { id: 3, title: "JavaScript語言精粹" }, { id: 4, title: "JavaScript高級程序設計" } ] } }); </script>
或者像artTemplate(同時支持NodeJS【NodeJS又支持requireJS模塊化】requireJs模塊化組合使用就可以搞很多事情了。。。),
模板渲染技術如(將id="test"代碼片端插入id="content")DOM元素中。。。其中 {{}} 插值表達式與Vue寫法很相似。。。
<div id="content"></div> <script id="test" type="text/html"> <h1>{{title}}</h1> <ul> {{each list value i}} <li>索引 {{i + 1}} :{{value}}</li> {{/each}} </ul> </script> <script> var data = { title: '基本例子', isAdmin: true, list: ['文藝', '博客', '攝影', '電影', '民謠', '旅行', '吉他'] }; var html = template('test', data); document.getElementById('content').innerHTML = html; </script>
三、JS組件化 純JavaScript組件化的開發(稱去頁面HTML化的開發)
$.widget("命名空間", "繼承父類", { //默認參數 options: { }, //初始化,控件生命周期內只運行一次 _init: function () { this._super();//調用父類方法 }, //創建控件,控件生命周期內會運行多次 _create: function () {}, //設置參數 _setOption: function (key, value) { console.log(key,value) // In jQuery UI 1.8及以前用法 $.Widget.prototype._setOption.apply(this, arguments); // In jQuery UI 1.9及以后用法 this._super("_setOption", key, value); }, // 釋放控件 銷毀 destroy: function () { // In jQuery UI 1.8及以前用法 $.Widget.prototype.destroy.call(this); // In jQuery UI 1.9及以后 } }); })(jQuery);
避開代碼不談,先看一個可視化界面的一個普通的按鈕。。。
按照PS圖層的概念來分層理解。細分如下:
前端熟知一個網頁都是由若干個單元(小組件)拼湊而成的(如文本組件、圖片組件、按鈕組件、表單組件等。。。組合而成)組件(或說部件)最大的好處是可以自由組合、靈活性。
那能不能寫一套組件,將按鈕層按照面向對象編程思維分離成抽象類、實現類(如文本抽象類、按鈕抽象類、文本實現類、按鈕實現類)?同時稍微修改下代碼,PC端也能使用呢,答案是可以的~
下節將通過一個按鈕背后的故事把PC、App端通用面向對象組件化的編程思維分享出來~
作者:Avenstar
出處:https://www.cnblogs.com/zjf-1992/p/10198910.html
關於作者:專注於WEB前端開發、知識管理提高學習效率、執行效率
本文版權歸作者所有,轉載請標明原文鏈接
資料參考
https://www.w3cplus.com/vue/seven-ways-to-define-a-component-template-by-vuejs.html
https://blog.csdn.net/chenchun91/article/details/53375041
http://aui.github.io/art-template/zh-cn/docs/installation.html
http://www.jqueryui.org.cn/tutorial/37.html