【JCP模式实战--ferrous-framework】ferrous前端开发框架邀您初体验
一、简介
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前端开发框架邀您初体验的更多相关文章
- 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮
原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...
- 前端工业化工具Gulp初体验
1. 全局安装 gulp: npm install --global gulp 2.在项目目录下,用以下命令创建一个基本的package.json文件 npm init 3.安装Gulp npm in ...
- 前端工业化工具Grunt初体验
今天来学学Grunt~~目的是为了自动化!自动压缩...自动修复...自动合并等... 提示:Grunt基于Node.js,安装之前要先安装Node.js 1.安装 grunt-cli npm ins ...
- Java多线程编程模式实战指南:Active Object模式(上)
Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...
- Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页
前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...
- Java多线程编程模式实战指南一:Active Object模式(上)
Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...
- 腾讯Web前端开发框架JX(Javascript eXtension tools)
转自:Web前端开发-Web前端工程师 » 腾讯Web前端开发框架JX(Javascript eXtension tools) JX – Javascript eXtension tools 一个类似 ...
- Java多线程编程模式实战指南(一):Active Object模式--转载
本文由黄文海首次发布在infoq中文站上:http://www.infoq.com/cn/articles/Java-multithreaded-programming-mode-active-obj ...
- Web前端开发框架大全-详述
可以说,前端技术的发展是互联网自身发展的一个缩影! 前端技术的发展经历了web1.0时代,即网页只能展示信息,几乎没有交互可言: web2.0时代,web2.0不再是单维的,逐渐发展为双向交流,另一特 ...
随机推荐
- Linux系统运维工程该具备哪些素质
记得在上高中时,物理老师总是会对我们一句话:"学习是件苦差事."工作后发现,其实做运维也是件苦差事.最为一名运维工程师,深知这一行的艰辛,但和IT行业其他职务一样,那就是付出的越多 ...
- js实现轮播图效果(附源码)--原生js的应用
1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- Verilog 任意(奇数/偶数)分频器
参加过一次笔试,让实现3分频,楼主当时是懵逼的,脑子里只知道同时利用上升沿和下降沿,本来写对了,慌张面试,脑子不管用了,(因为是手写,只能用脑子仿真)后来又给改错了,捂脸... 还是逻辑不清晰,现在自 ...
- jdk 环境变量配置方法总结
全部修改在用户变量/系统变量 系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(本人是 D:\java\Java\jdk1.8.0_72) 系统变量→寻找 Path 变量→编辑在 ...
- jsp 之 解决 Mysql net start mysql启动,提示发生系统错误 5 拒绝访问的问题
在dos下运行net start mysql时 !!!提示发生系统错误 5:拒绝访问!只要切换到管理员模式就可以启动了. 所以我们要以管理员身份来运行cmd程序来启动mysql. 1.在开始菜单的搜索 ...
- js复习---string
对js的string的方法复习: 1.charCodeAt() 返回一个整数,代表指定位置字符串的unicode编码. strObj.charCodeAt(index) index 是处理字符的从零 ...
- 一步一步学MySQL-一致性非锁定读和锁定读
一致性非锁定读(consistent nonlocking read) 一致性非锁定读是值InnoDB存储引擎通过多版本控制(multi versioning)的方式来读取当前执行时间数据库中的数据. ...
- [Java] Java读取Word文档
前言 最近需要做一些NLP 方面的工作,使用的是Java,在此总结一下使用Java读取Word(.doc)格式文件的方法. Apache基金会非常厉害,开源工具包POI就可以处理微软家的文档,甚至包括 ...
- re模块和正则表达式
re模块 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看 ...
- 【EntityFramework 6.1.3】个人理解与问题记录(3)
前言 说点题外话:前几天接连微软老爹发布了 .net core 2.0 / asp.net core 2.0 / ef core 2.0 / .net standard 2.0(此处撒花,不管是否后面 ...