1. 程式人生 > >關於前端常見的2種開發模式

關於前端常見的2種開發模式

    一、前言

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化的開發)

 去HTML化並不是說沒有頁面中沒有HTML,而是將頁面中的HTML骨架整合到JS元件中去,通過呼叫元件的方式初始化、將渲染的資料掛載到DOM元素上 部件庫(Widget Factory)旨在解決這些問題,它移 除了模板,併為 外掛建立了一個一致的 API(一套設計規範)。 儘管依賴於jQuery,隨著 使用場景不同,都會體現著 各自的獨特性(或優缺點)。這樣來看的話,不見得就比Vue落後。。。 將 UI設計的視覺化介面通過 面向物件方式抽象類、實現類、層級分離,從而實現 複用性、可移植性(一套程式碼稍微修改PC/APP端都能使用)、維護性更高的程式碼。 一個簡單的jQuery Widget部件元件生命週期大致如下。。。
 $.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