一、简介

ferrous-framework是为了迎合微服务架构而封装的纯前端开发框架。

数据驱动为核心理念,实现了一种介于单页面和多页面的开发模式,让大家根据自己的需要对单页面和多页面进行切换或者共存。

页面结构采用JCP(Javascript Client Page)模式,可以很好得对前端页面进行逻辑抽象和组装。

二、何为JCP(Javascript Client Page)模式?

这个词语的解释详见http://www.yomho.net/2017/09/04/javascript-client-page-mode/

此文还包含了JCP模式的架构图。

下面代码为JCP文件的配置规范样例

define(function (require) {
return {
metadata: {
get: function () {
return {
title: '登录'
}
}
},
jcp: {
js: [
{
getJOM: function () {
return require('page/login/controller/loginController');
}
}
],
html: {
layout: {
getDOM: function () {
return require('text!page/login/view/layout.html');
}
}
}
}
};
});

三、技术整合

1、jquery+jquery-ui;

2、requirejs(为页面功能的组装、压缩和合并提供支持);

3、backbone(实现了hash路由);

四、框架特性和封装理念

1、JCP(Javascript Client Page)模式,让您可以更好地规划系统子功能的业务实现 ,更大限度地重用代码;

2、不过度封装,对window对象无污染,方便集成各种框架;

3、深知单页面和多页面的优势,并可以让大家根据项目的特点进行选择或混合;

4、初步写了API开发样例(表单、缓存、认证),让大家可以根据自己的设计依葫芦画瓢设计其他的API;

5、一个页面功能一个目录,让子功能可以更好地的打包和管理;

6、。。。等你们发现

五、框架缺陷

对SEO支持不是很好,这是单页面模式的通病,如果需要SEO,请设计好hash值以迎合搜索引擎。

不过对于需要SEO的企业网站,还是建议采用传统的开发模式,让数据从后端与视图模板混合。

六、github地址

https://github.com/yomho/ferrous-framework

涵盖功能:登录+主界面+登录/主界面认证自动跳转

测试账号/密码:admin/123456

如何运行?部署站点后打开index.html即可,这是整个web程序的容器,同时也是整个web站点的入口。

对于单页面来说只有这一个容器。

对于多页面来说也可能只有这一个容器(当然也可以存在多个容器)--这也是用一个容器实现多页面需求的一个闪光点。

如果使用过程中有什么好建议,你们懂的。

总结和后续

最近一两年,一直从事微服务架构的前端框架的研发和项目的开发,发现目前流行的前端开发框架都不是很好用。

一些双向绑定的框架对window对象污染太严重,这对单页面模式是不友好的,容易造成其他问题(对象和变量释放不及时,再次占用内存过多)。

单页面模式不太适合SEO,但是非常适合前端资源的版本管理;

单页面模式让前端的发布更加轻松,而且开发的时候,还可以让开发人员把注意力集中在子功能的业务上。

后续将会继续抽空完善整个框架的技术整合和demo封装,请大家关注ferrous-framework。

【JCP模式实战--ferrous-framework】ferrous前端开发框架邀您初体验的更多相关文章

  1. 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...

  2. 前端工业化工具Gulp初体验

    1. 全局安装 gulp: npm install --global gulp 2.在项目目录下,用以下命令创建一个基本的package.json文件 npm init 3.安装Gulp npm in ...

  3. 前端工业化工具Grunt初体验

    今天来学学Grunt~~目的是为了自动化!自动压缩...自动修复...自动合并等... 提示:Grunt基于Node.js,安装之前要先安装Node.js 1.安装 grunt-cli npm ins ...

  4. Java多线程编程模式实战指南:Active Object模式(上)

    Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...

  5. Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页

    前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...

  6. Java多线程编程模式实战指南一:Active Object模式(上)

    Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...

  7. 腾讯Web前端开发框架JX(Javascript eXtension tools)

    转自:Web前端开发-Web前端工程师 » 腾讯Web前端开发框架JX(Javascript eXtension tools) JX – Javascript eXtension tools 一个类似 ...

  8. Java多线程编程模式实战指南(一):Active Object模式--转载

    本文由黄文海首次发布在infoq中文站上:http://www.infoq.com/cn/articles/Java-multithreaded-programming-mode-active-obj ...

  9. Web前端开发框架大全-详述

    可以说,前端技术的发展是互联网自身发展的一个缩影! 前端技术的发展经历了web1.0时代,即网页只能展示信息,几乎没有交互可言: web2.0时代,web2.0不再是单维的,逐渐发展为双向交流,另一特 ...

随机推荐

  1. 一次浴火重生的MySQL优化(EXPLAIN命令详解)

    一直对SQL优化的技能心存无限的向往,之前面试的时候有很多面试官都会来一句,你会优化吗?我说我不太会,这时可能很多人就会有点儿说法了,比如会说不要使用通配符*去检索表.给常常使用的列建立索引.还有创建 ...

  2. CRM权限管理

    CRM权限管理 一.概念 权限管理就是管理用户对于资源的操作.本 CRM 系统的权限(也称作资源)是基于角色操作权限来实现的,即RBAC(Role-Based Access Control,基于角色的 ...

  3. nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

    一.回顾 支付宝插件源码下载地址:点击下载 上篇介绍了使用支付宝插件进行支付,全额退款,部分退款还有插件的多店铺配置,本文介绍下如何实现的. 二.前期准备 插件主要有3个功能: 多店铺插件配置 支付功 ...

  4. annotation-config, annotation-driven, compont-scan 区别

    <annotaion-driven/>标签: 这个标签对应的实现类是org.springframework.web.servlet.config.AnnotationDrivenBeanD ...

  5. Vue实例对象的数据选项

    前面的话 一般地,当模板内容较简单时,使用data选项配合表达式即可.涉及到复杂逻辑时,则需要用到methods.computed.watch等方法.本文将详细介绍Vue实例对象的数据选项 data ...

  6. 微信小程序(有始有终,全部代码)开发--- 新增模块: 图片选取以及拍照功能

    开篇语 前几天发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本: 简年18: 微信小程序(有始有终,全部代码)开发 ...

  7. DynamicXml

    /* var xml = @"<root><books><book is_read=""false""><a ...

  8. 27. Remove Element【leetcode】

    27. Remove Element[leetcode] Given an array and a value, remove all instances of that value in place ...

  9. 对接第三方平台JAVA接口问题推送和解决

    前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...

  10. 在App Store中无法更新xcode 8.3.2时 以及更新新系统10.12

    今天更新Xcode 遇到三个坑坑1 要想更新Xcode最新版本 需要先把电脑系统更新到10.12 坑2 电脑系统更新到10.12 需要更新Mac Sierra 就可以了坑3 在App Store中下载 ...