V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
houfeng
V2EX  ›  JavaScript

一个 MVC 框架以 MVVM 之「魂」复活了!

  •  1
     
  •   houfeng · 2016-12-06 14:58:00 +08:00 · 2598 次点击
    这是一个创建于 2928 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GitHub: https://github.com/houfeng/mokit

    Mokit 最初编写于 2012 年,是一个面向移动应用的前端 mvc 框架, v3 版本进行了大量的重构或重写,并尽可能的保持了和之前版本类似的 API , v3 是一个「极轻量」的 MVVM 框架,相较目前主流的类似的框架(react/vue/angular), mokit v3 更为「轻量」,希望为开发人员提供多一种的选择。

    相较 v2 主要变化

    • MVC -> MVVM
    • 重写模板引擎(由字符模板改为 DOM 模板),新增支持双向绑定
    • 原来的 View 类改为 Component ,同时取消了 Controller 类
    • options 选项改为 properties ,并支持计算属性
    • onRender 生命周期函数改为 onReady
    • 新增支持 data 选项
    • 新增支持 watches 选项
    • 分拆 template 选项功能,不再自动检查是否为 Element ,同时新增 element 选项
    • 指令默认前缀由 data- 改为 **m:**,同时自定义指令

    特性

    • 面向移动设备,内置支持常用「手势事件」并可以轻松添加自定义事件。
    • 极其轻量「核心 + 手势 API + Router 」仅 13k (uglify+gzip)
    • 提供类 WebCompoents 的支持,并支持「组件继承」

    Hello world

    HTML:

    <div id="app">
      <input type="text" m:model="name" />
      <button m:on:tap="say(name)">click me</button>
    </div>
    

    JavaScript:

    //启动应用
    mokit({
      element: document.getElementById('app'),
      data:function(){
        return {
          name: '世界'
        };
      },
      say: function (name) {
        alert('hello '+ name);
      }
    }).start();
    

    定义组件

    编写组件:

    //定义一个 hello 组件
    var Hello = new mokit.Component({
      template: '<button m:on:tap="say(name)" m:content></button>',
      properties: { name: null},
      say: function (name) {
        alert('hello '+ name);
      }
    });
    

    HTML:

    <div id="app">
      <m:hello m:prop:name="name">click me</m:hello>
    </div>
    

    JavaScript:

    //启动应用
    mokit({
      element: document.getElementById('app'),
      components:{ Hello: Hello }
      data:function(){
        return {
          name: '世界'
        };
      }
    }).start();
    

    在线示例

    规划

    • 支持服务端渲染
    6 条回复    2016-12-14 22:33:42 +08:00
    Tuisku
        1
    Tuisku  
       2016-12-06 15:58:07 +08:00
    First
    看起来不错,有机会试试看
    CupTools
        2
    CupTools  
       2016-12-06 17:13:49 +08:00 via Android
    果然是一年三个新框架 🤓
    HuangLibo
        3
    HuangLibo  
       2016-12-07 14:11:56 +08:00
    MVVM 好!
    hasbug
        4
    hasbug  
       2016-12-11 23:17:31 +08:00
    有点怕
    houfeng
        5
    houfeng  
    OP
       2016-12-13 15:07:00 +08:00
    @hasbug 怕什么?
    hasbug
        6
    hasbug  
       2016-12-14 22:33:42 +08:00
    @houfeng 选型困难。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3230 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:38 · PVG 18:38 · LAX 02:38 · JFK 05:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.