关于前端常见的2种开发模式

    1、前言

2018年12月底,感受作事情不是太顺畅。。。就当是运气很差吧。。。XX总喜欢把本身的问题——推拖到别人身上,什么事情都以为本身的就是完美(都是别人的问题),你这么能,你咋不上天呢。。。html

已经是2019年了,祝你们新年快乐,开开心心,心想事成,万事如意。。。。。。直接进入正题哈。。。前端

前端开发你们熟知很是传统的开发模式,像HTML/CSS/JS 一锅炖的方式。虽然能够较快速、无规范开发。。。vue

但对于代码编程可维护性、可读性、可迁移性等方面来讲简直就是灾难。。。因而便有了模板式的开发&&组件化编程方式的出现。。。jquery

    2、模板式的开发

Vue 自定义父子组件通讯模板渲染, 自定义的   <book-item> </book-item>  标签将被替换成自定义的模板 <li></li>  输出。。。 代码请点击 git

<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模块化组合使用就能够搞不少事情了。。。),github

模板渲染技术如(将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>

    3、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);

 避开代码不谈,先看一个可视化界面的一个普通的按钮。。。app

按照PS图层的概念来分层理解。细分以下:模块化

前端熟知一个网页都是由若干个单元(小组件)拼凑而成的(如文本组件、图片组件、按钮组件、表单组件等。。。组合而成)组件(或说部件)最大的好处是能够自由组合、灵活性。工具

那能不能写一套组件,将按钮层按照面向对象编程思惟分离成抽象类、实现类(如文本抽象类、按钮抽象类、文本实现类、按钮实现类)?同时稍微修改下代码,PC端也能使用呢,答案是能够的~

下节将经过一个按钮背后的故事把PC、App端通用面向对象组件化的编程思惟分享出来~

   

做者:Avenstar

出处:http://www.javashuo.com/article/p-halclpzl-z.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

相关文章
相关标签/搜索