Foreword

写在前面的话:

鉴于先前 FrontEnd 开发活动,各小项目完全独立零散,造成大量重复冗余工作;为此引入 Vue 以组件化,将常用 功能 | 布局 | 部件 封装为体贴组件,按需一键引用;达到方便活动开发目的。除了活动本身外,我们推崇尽可能[!]注意以下几点:

代码规范: 自此,我大前端就开启了“合作”开发模式的大门了,规范代码尤为重要!;于己 大利;

Vue + Es6Vue 既用之,则当:用之;Es6,大势之趋,于己也大利;

Webpack + Gulp: 语言,本身就是一种工具;而这些写的工具,更应该会用,于己大利;

Jade + Scss: 用不用是一种喜好,会不会用是一种态度。见识, 有时胜于知识;

组件开发: 自此大家当产出些利人利己的功能 | 布局 | 部件等组件了,切记:代码规范使用便捷 流程简洁 方便维护&扩展

写于关乎项目那点道:

为方便引入(import)组件,故此将公共组件放置于 ns/moudles 下;具体可参见下活动结构图:

modules/scripts/alias.config.js 此文件下为公共组件配置了别名(alias);在 xxxmod/concreAct 中,直接import这些别名即可,譬如:

import ActTools from  "ActTools";
import popupToast from 'popupToast';
import normalDialog from 'normalDialog';
import strongDialog from 'strongDialog';
import countDown from 'countDown';

引入组件后,需要将其在 template 和脚本代码中(components)加以使用,具体可参见以下示例:

<template>
    <div class="content">
        <popup-toast></popup-toast>
    </div>
</template>

<script>
import ActTools from  "ActTools";
import popupToast from 'popupToast';
import normalDialog from 'normalDialog';
import strongDialog from 'strongDialog';
import countDown from 'countDown';

var Tools = ActTools.tools;

export default {
    data () {
        return {
        }
    },
    compiled(){
        console.log("compiled()");
        Tools.importMainCss();     //外链加载页面CSS文件
        this.initialize();         //初始化页面请求数据
    },
    components: {
        NormalDlg,
        popupToast,
        normalDialog,
        strongDialog,
        countDown
    },
    methods: {
        /*Initialize Function: Request Conf+Data_interface!*/ 
        initialize: function(){
        },

        showNormalDlg: function(text){
            // this.$broadcast('show-dlg', text); // Call Local Normal-Dlg 

            function testDemo(){
                console.log('Look,Look, Whether it can be implemented about callBackFunc!');
            } 

            var dlgMsgObj = {
                titleText: "&温馨提示&", 
                bodyText: text,
                confirmText: "确认",
                callBackFunc: testDemo,
                isShowCloseXFlag: true
            }
            // var dlgMsgObj = text;  //Just Single Param, U Can Deliver Like This 
            this.$broadcast('show-normal-dlg', dlgMsgObj);
        }, 
        showPopupToast: function(text){
            var toastMsg = {
                bodyText: text,
                timer: 2222,
                callBackFunc: function(){ alert('test')}
            }
        }
    },
    events: {
        'on-countdown-finish': function (countNum) {
            // countNum 统计调用此 countDown 次数;
            //Do Something U Want
        }
    }
}
</script>