前端自寫vue.app.js 小程序框架

相信寫太小程序的程序員,都熟悉裏面的框架 跟 Vue.js 框架 很像吧, 那麼, TA遠方 就本身搗鼓了一個 像模像樣的 框架, 一個雛形, 值得你們看一看, 有什麼問題,下面留言javascript

首先,在HTML頁面須要先引用 vue.js 腳本, 再引用TA遠方親自寫的vue.app.js腳本, 源代碼以下:html

var VM = null; 
if (typeof app == 'object') { 
    app.setTitle = function (title) { 
        let titlebar = document.getElementById('headerTitle'); 
        titlebar.innerHTML = title; 
        let bodyContent = titlebar.parentNode; 
        bodyContent.classList.toggle('mypin-hidden', false); 
        bodyContent.nextElementSibling.classList.toggle('m_content_after_titlebar', true); 
    }; 
    let methods = {}; 
    for (let fun in app) { 
        switch (fun) { 
            case 'data': 
            case 'onLoad': 
            case 'onShow': 
            case 'onHidden': 
            case 'dataListener': continue; 
            default: methods[fun] = app[fun]; 
        } 
    } 
    VM = new Vue({ 
        el: '#app', 
        data: app.data, 
        methods: methods, mounted() { 
            if (typeof app.onLoad == 'function') app.onLoad(); 
            if (typeof app.onShow == 'function') app.onShow(); 
            document.addEventListener('visibilitychange', function () { 
                if (document.hidden && typeof app.onHidden == 'function') app.onHidden(); 
                else if (!document.hidden && typeof app.onShow == 'function') app.onShow(); 
            }); 
        }, 
        watch: app.dataListener 
    }); 
}複製代碼

有了上面的基礎, 接下來,就寫小程序相似的邏輯處理vue

<html>
<head>
    <title>小程序</title>
    <script src="vue.min.js"></script>
    <script src="vue.app.js"></script>
</head>
<body>
    <div class="m_header_titlebar mypin-hidden">
        <a href="javascript:history.go(-1);" class="m_btn m_btn-left-back"></a>
        <span id="headerTitle">標題欄</span>
    </div>
<div id='app'>
    <h1>你好! {{a}}</h2>
    <hr/>
    <form>
        <input type='text' v-model='a'>
        <button v-click:'bindOnClick()'>點我</button>複製代碼
</form>
</div>
<script>
var app = {
    data:{
        a : 'hello world'
    },
    onLoad(){
        //console.log('onLoad');
        // 小程序加載事件
        //app.setTitle("設置小程序標題");
    },    onShow(){
        //console.log('onShow');
        // 小程序頁面顯示事件
    },    onHidden(){
        //console.log('onHidden');
        // 小程序頁面隱藏事件
    },    dataListener: {
        a : function(new, old){
            //console.log('數據改變監聽 變量a改變前:'+old + ' 改變後:'+new);
        }
    },    myFunction(){
        // 能夠自定義的方法myFunction
        // 想小程序那樣,自定義方法寫多少就用多少
    },
    bindOnClick(){
        // 自定義的點擊方法
        alert('Hello');
    }
};
</script>
</body>
</html>複製代碼

以上是基本的實現, 能夠自行擴展, 如下是請求的擴展,相似小程序的request( )方法java

首先,須要引入axios.js 腳本,相似jquery.ajax的支持, 而axios比較簡單好用jquery

<script src='axios.js'></script>
<script>
axios.post(url, postData).then(function (response) {
                let res = response.data;
                if (res == 0) console.log('更新成功');
                else console.log('更新失敗');
                //console.log(res);
            }).catch(function (error) {
                //console.error('請求異常都會出如今這裏');
                debugger;
            }
);
</script>複製代碼

能夠看來, Vue寫寫小程序是徹底能夠的.ios

相關文章
相關標籤/搜索