1.不要设计,也不要通过DOM操作去改变你的页面

你用jQuery去设计一个页面,并让它动起来。这是因为jQuery就是让一切简单的事情变复杂的罪魁祸首。

但是用avalon,你必须从零开始去构思你的架构。"我有这么一些DOM,我想要它去做XXX",不,你不该这么想,你首先应该想到你要完成的是什么,
然后去设计你的整个应用,最后去设计你的view。

2.不要在avalon的代码里混杂着jQuery代码

不要首先想到用jQuery去解决问题。首先想到的应当是avalon的VM与$watch。
你刚开始学avalon的时候jQuery特别诱人,所以我才建议新的avalon开发者坚决不用jQuery,
至少等到你能够按MVVM的方式去处理问题时再说吧。

3.要一直想着架构

首先你要明白,SPA(single-page applications)也是applications。不是零散的网页。
因此我们不能仅仅从客户端开发者的角度去考虑,还需要把自己当成服务器端工程师。
我们要想这把我们的application分离成独立的,可扩展的,可供测试的组件。

为了达到这一点,你要把你重复利用的视图独立成一个模板,通过ms-include引入。
你要把你经常用到的方法,封装成VM的一个个方法或过滤器。
你要学会切割页面
,让它交由不同的ms-controller来处理。
你要学会使用mmRouter,路由器是你掌握SPA的证明。
你要学会用ms-widget封装UI组件,这是对你未来的投资!

think in avalon的更多相关文章

  1. MVVM大比拼之avalon.js源码精析

    简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...

  2. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  3. 迷你MVVM框架avalon在兼容旧式IE做的努力

    很多时候,写代码就像砌砖头,只要我们不关心盖楼的原因.建筑的原理.土木工程基础和工程经验,就算我们砌了100栋高楼,我们也就只是一个砌砖工人,永远也成为不了一个工程师,更别说建筑师了.而那些包工头也只 ...

  4. 前端展望:取avalon,弃angular

    打给比方,如果说angularJS是剑,那么avalon就是匕首.匕首比剑更易学,更快,更适合快速作战... 我们还是直接来实际的吧:   目前项目开发中有以下几个通用需求: 有前端路由系统,用来划分 ...

  5. 轻量级前端MVVM框架avalon - 初步接触

    迷你简单易用的MVVM框架 avalon的介绍http://rubylouvre.github.io/mvvm/ 按照作者的介绍,在HTML中添加绑定,在JS中用avalon.define定义View ...

  6. 轻量级前端MVVM框架avalon - 执行流程1

    基本上确定了avalon的几个重要元素的关系: M,即model,一个普通的JS对象,可能是后台传过来的,也可能是直接从VM中拿到,即VM.$json.有关的这个$json的名字还在商讨 V,即Vie ...

  7. 轻量级前端MVVM框架avalon - 执行流程2

    接上一章 执行流程1 在这一大堆扫描绑定方法中应该会哪些实现? 首先我们看avalon能帮你做什么? 数据填充,比如表单的一些初始值,切换卡的各个面板的内容({{xxx}},{{xxx|html}}, ...

  8. 轻量级前端MVVM框架avalon - 整体架构

    官网提供架构图 单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面 ...

  9. 轻量级前端MVVM框架avalon - ViewModel

    废话说了大几篇,我们开始来点干货了~ ViewModel的内部机制 在MVVM中,数据是核心.而jQuery则以DOM为核心. 而DOM只是HTML在JS的世界的抽象,是一个很易变的东西.因此如果业务 ...

  10. 轻量级前端MVVM框架avalon - 模型转换

    接上一章 ViewModel modelFactory工厂是如何加工用户定义的VM? 附源码 洋洋洒洒100多行内部是魔幻般的实现 1: function modelFactory(scope) { ...

随机推荐

  1. JavaScript for 循环累加 json 字符串

    var msg = {"status":1,"data":[{"id":"12","words":& ...

  2. 阿里云简单的HTTPS配置

    1, 在CA证书服务中购买证书,填写信息,之后[域名授权配置]. 域名授权配置有两种,一种是文件配置,一种是DNS配置,这里我选择DNS配置. 记录类型:TXT 主机记录:按照上图填写 记录值:按照上 ...

  3. 《DSP using MATLAB》示例Example7.10

    代码: ws1 = 0.2*pi; wp1 = 0.35*pi; wp2 = 0.65*pi; ws2 = 0.8*pi; As = 60; tr_width = min((wp1-ws1), (ws ...

  4. 一个查看Cookie的便捷工具——EditThisCookie

    Appium正在努力准备中,很快就要和大家见面了- 今天给大家分享一个查看cookies的工具,用fiddler总感觉有点麻烦,还乱七八糟的找不到到底哪个链接是当前网站的cookies: 首先,你用的 ...

  5. svn问题解答

    一.svn在提交文件是报错:previous operation has not finished;run 'cleanup' if it was interrupted 原因,工作队列被占用,只需在 ...

  6. debug调试工具不显示的解决办法

    清空在runtime目录下的debug目录下的文件即可.

  7. LeetCode String Compression

    原题链接在这里:https://leetcode.com/problems/string-compression/description/ 题目: Given an array of characte ...

  8. nginx 通过proxy_next_upstream实现容灾和重复处理问题

    ngx_http_proxy_module 模块中包括proxy_next_upstream指令 语法: proxy_next_upstream error | timeout | invalid_h ...

  9. expdp实现oracle远程服务器导出到本地

    expdp导出 expdp user/pwd@orcl directory=dd network_link=dblink dumpfile=fileName.dmp //user为本地用户名 //ne ...

  10. golang里面检测对象是否实现了接口的方法

    写法有点怪异,记一下吧 _, implemented := this.delegate.(IGenTcpServerDelegate) if implemented { this.delegate.G ...