【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不再是单维的,逐渐发展为双向交流,另一特 ...
随机推荐
- cloudstack下libvirtd服务无响应问题
在cloudstack4.5.2版本下,偶尔出现libvirtd服务无响应的情况,导致virsh命令无法使用,同时伴随cloudstack master丢失该slave主机连接的情况.最初怀疑是lib ...
- 初学Python(十)——列表生成式
初学Python(十)--列表生成式 初学Python,主要整理一些学习到的知识点,这次是列表生成式. # -*- coding:utf-8 -*- ''''' 列表生成式 ''' #一行代码表达所有 ...
- 30. leetcode 121. Best Time to Buy and Sell Stock
121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...
- python pygame--倒计时
import pygame,sys,time,datetime class decTime(object): #将秒转化为时分秒 def __init__(self,totalTime): self. ...
- 我的Chrome
插件: CaretTab - New Tab Clock and Date 完全就是为了好看
- 用python语言编写网络爬虫
本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re= ...
- java ArrayList 踩坑记录
做编程的一个常识:不要在循环过程中删除元素本身(至少是我个人的原则).否则将发生不可预料的问题. 而最近,看到一个以前的同学写的一段代码就是在循环过程中删除元素,我很是纳闷啊.然后后来决定给他改掉.然 ...
- 【开源社交系统研发日记】利用 Docker 包 Laradock 服务器部署 Laravel & ThinkSNS+ 等程序实战(多项目)
什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+. 前段时间不知道抽上面疯 ...
- 1.SpringBoo之Helloword 快速搭建一个web项目
背景: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配 ...
- Ubuntu apt-get update 失败
apt-get碰上了"fetch http://--失败", 自带源在国内连接性不好. 解决:改用"阿里云Ubuntu源": https://www.yuren ...