前言

对于一个完整的将web 应用程序转换为 SaaS 应用程序的过程而言,需要满足以下7个条件:

  1. 应用程序必须支持多租户
  2. 应用程序必须具备某种程度的自助注册功能。
  3. 必须具备订阅/记账机制。
  4. 应用程序必须能够有效地扩展。
  5. 必须能够监视、配置和管理应用程序和租户。
  6. 必须有一种机制能够支持惟一的用户标识和身份验证。
  7. 必须有一种机制能够支持对每个租户进行某种程度的自定义。

本文主要讨论的是实现SaaS的核心,支持多租户。

阅读更多

关于JS的模块化,阮一峰的博客上有篇很好的文章,请参考,模块的写法AMD规范

本文翻译自RequireJS官方文档 WHY AMD?, 更为详细地阐述了为什么需要AMD。

模块化的目的

什么是JavaScript模块?它们的目的是什么?

  • 定义:如何将一段代码封装为一个有用的单元,并且怎么描述它的功能、怎样为这个模块导出一个值
  • 依赖参考:如何引用其他代码单元

当今的WEB

(function () {
    var $ = this.jQuery;

    this.myExample = function () {};
}());

阅读更多

Spring Framework 4.1 的release已经有一阵子了,今天终于有点时间,看了下新特性中对于静态资源的灵活处理和转换,同时基于这种处理也提供了一种体验更好的开发方式,让我觉得非常兴奋。 先来看下对于这个新特性中的核心功能, ResourceResolversResourceTransformers

  1. ResourceResolvers用来将内部的URL解析为用户能够访问的外部公共的URL(ResourceResolver接口定义的是双向的解析)。
  2. ResourceTransformers用来修改资源的内容。

这两个功能相结合,不禁让我想起了Rails的Sprockets。Sprockets主要进行三项工作,资源文件的合并,压缩,以及对高级语言的预编译(coffeescript,sass)。那么Spring的这个特性是另外一个pipeline吗? 官方博客给出的解释是这样的,

在Spring Framework 4.1中,我们使用依赖于优化的路径,这种优化在构件时使用最好的外部工具,在运行时使用Resolvers 和和Transformers 。

阅读更多

Fork me on GitHub