基于 Javascript 的組件化開發框架:Transformers

jopen 10年前發布 | 19K 次閱讀 JavaScript開發 Transformers

Transformers 是一套基于 Javascript 的已徹底組件化與模塊化的開發框架,主要關注組件路由、組件消息傳遞和組件異步加載等,其中要解決的核心問題是組件間的解耦。

快速開始

引入 jQuery

<script src="http://javascript.u.qiniudn.com/jquery/1110.js"></script>

引入 Transformers 框架

<script src="http://javascript.u.qiniudn.com/jquery/transformers.js"></script>

開始使用

1. 編寫組件容器

<!doctype html>
<html>
<head>
    <title>Hello World</title>
    <meta charset="utf-8" />
    <script src="http://javascript.u.qiniudn.com/jquery/1110.js"></script>
    <script src="http://javascript.u.qiniudn.com/jquery/transformers.js"></script>
</head>
<body>

<div id="content" class="TFComponent">
    <div>
        <!--
            指定 tf-action-click 屬性會給此元素綁定 click 事件
            事件處理器是組件的 testAction 方法
        -->
        <button type="button" tf-action-click="test">測試</button>
    </div>

    <!-- content 模板的目標渲染節點 -->
    <div class="TFTarget-content"></div>

    <!-- 名為 content 的模板 -->
    <script type="text/html" class="TFTemplate-content">
    你好!世界!
    </script>
</div>

</body>
</html>

2. 創建應用程序

// 創建應用程序
TF.Core.Application.create({
    baseUrl: "./"
});

3. 創建組件 Home

// 定義名為 Home 的組件
TF.define('Home', {
    // 組件 DOM 準備完畢回調函數
    DomReady: function() {
        console.log('ready!');
    },

    // Action 是組件對外的接口
    testAction: function(args) {
        console.log('test!');

        // 渲染靜態模板
        this.sys.renderStaticTemplate('content');

        this.renderOk();
    },

    // 組件私有方法,外部無法訪問
    renderOk: function() {
        console.log('render OK!');
    }
});

4. 注冊組件

// 添加名為 Home 的組件到組件管理器中
TF.Core.ComponentMgr.add([{
    name: 'Home',
    appendRender: false,
    lazyRender: false,
    hide: false,
    applyTo: '#content'
}]);

5. 啟動應用程序

// 等待 DOM Ready
TF.ready = function(){
    // 啟動應用程序
    TF.Core.Application.bootstrap();
};

實例

<!doctype html>
<html>
<head>
    <title>Hello World</title>
    <meta charset="utf-8" />
    <script src="http://javascript.u.qiniudn.com/jquery/1110.js"></script>
    <script src="http://javascript.u.qiniudn.com/jquery/transformers.js"></script>
</head>
<body>

<div id="content" class="TFComponent">
    <div>
        <!--
            指定 tf-action-click 屬性會給此元素綁定 click 事件
            事件處理器是組件的 testAction 方法
        -->
        <button type="button" tf-action-click="test">測試</button>
    </div>

    <!-- content 模板的目標渲染節點 -->
    <div class="TFTarget-content"></div>

    <!-- 名為 content 的模板 -->
    <script type="text/html" class="TFTemplate-content">
    你好!世界!
    </script>
</div>

<script type="text/javascript">
// 創建應用程序
TF.Core.Application.create({
    baseUrl: "./"
});

// 定義名為 Home 的組件
TF.define('Home', {
    // 組件 DOM 準備完畢回調函數
    DomReady: function() {
        console.log('ready!');
    },

    // Action 是組件對外的接口
    testAction: function(args) {
        console.log('test!');

        // 渲染靜態模板
        this.sys.renderStaticTemplate('content');

        this.renderOk();
    },

    // 組件私有方法,外部無法訪問
    renderOk: function() {
        console.log('render OK!');
    }
});

// 添加名為 Home 的組件到組件管理器中
TF.Core.ComponentMgr.add([{
    name: 'Home',
    appendRender: false,
    lazyRender: false,
    hide: false,
    applyTo: '#content'
}]);

// 等待 DOM Ready
TF.ready = function(){
    // 啟動應用程序
    TF.Core.Application.bootstrap();
};
</script>

</body>
</html>

項目主頁:http://www.baiduhome.net/lib/view/home/1412906056733

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!