前端模块与CMS结合
前端模块与CMS结合
在《FIS官方技术群》经常看到一些讨论,这次是 前端组件化与CMS的相关讨论,主要观点来自群里 漂流瓶(张云龙前辈)。
CMS是运营人员直接操作,我们往往需求各种各样的界面,需要前端手动拼接开发,当然这是传统方式。
现在的新的组件化开发可以改变这个模式,让运营人员可以直接拼装页面.
与此讨论相关的PDF 《UC前端工程实践》 自行解决
前言:
《UC前端工程实践》,目前已经实现的:
- 模块化开发
- 组件化开发(初步探索)
- 模块生态建立
- 多版本并存(灰度发布)
- 持续集成全流程
- cms项目模块化开发及运营
scrat-webapp模块化开发体系
大概模式:
就是建立一个普通的前端模块化工程,然后本地开发项目,用fis构建的时候把工程切割成cms碎片并打成一个压缩包,把压缩包上传到cms中,cms把所有碎片直接放到模板库,把静态资源推送到cdn。然后运营就可以在cms里组装了。
前端工程师本地开发,运营在cms上组装页面,连接本地工程和cms系统的,就是构建
问题
- 一直以来,cms系统设计没有考虑过模板开发的工程问题,在cms系统里维护那些碎片是非常痛苦的,而且一旦把开发好的前端项目“cms碎片化”之后,基本上就不能再升级维护了,预览什么的也都要依赖cms系统。(相信大家都理解这种痛苦)
新的方式(这里需要一个cms拥有这种功能 图片均来自uc方面):
- 拆分前端组件(下图),将其变成一个一个模块,例如(banner模块,新闻列表模块,广告模块)
1.前端组件:该图片展示的是一个cms项目的前端组件
- 运营人员组装: 假设有一个新的页面(下图),我们将该页面划分为几个不同的模块区域
- 开始组装:
- 页面模块选择
数据编辑
编辑之后,前端会把数据和工程中模块的模板渲染在一起得到html保存起来。这部分数据是编辑维护的
- 条件树,用于针对不同设备
- 页面模块选择
- 把前端解放出来之后,可以在本地开发多一些模块推到cms上,后面编辑就自己拼装去吧
前端开发模式细节
一套模块开发体系 。
一个构建打包工具 。
一个对应模式CMS发布编辑系统 。
模块开发体系
例如:scrat components ploymer开发模块是独立的,可引入另外一模块,是可组合可拆分可更换的单元。
例如 header模块:
一个模块一个目录
像写nodejs一样写js模块
将模板嵌入到js中
css只关心模块内样式
css也有依赖关系
相对路径引用资源
饮用模块即加载所有资源构建打包工具
资源内嵌
资源加载
依赖管理
性能优化
开发调试
前端模块与CMS结合的更多相关文章
- webpack前言:前端模块系统的演进
前端开发和其他开发工作的主要区别,首先是前端是基于多语言.多层次的编码和组织工作,其次前端产品的交付是基于浏览器,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源 ...
- webpack前端模块打包器
webpack前端模块打包器 学习网址: https://doc.webpack-china.org/concepts/ http://www.runoob.com/w3cnote/webpack-t ...
- 理解前端模块概念:CommonJs与ES6Module
前言 现代前端开发每时每刻都和模块打交道.例如,在项目中引入一个插件,或者实现一个供全局使用组件的JS文件.这些都可以称为模块. 在设计程序结构时,不可能把所有代码都放在一起.更为友好的组织方式时按照 ...
- JS模块规范 前端模块管理器
一:JS模块规范(为了将js文件像java类一样被import和使用而定义为模块, 组织js文件,实现良好的文件层次结构.调用结构) A:CommonJS就是为JS的表现来制定规范,因为js没有模块的 ...
- 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)
http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...
- [JavaScript] 前端模块编程实现
前端模块化 前端早期写代码都是全局变量满天飞,这种情况会造成全局命名空间污染,变量冲突等问题 var a = 1; var b = 2; function c(){} function d(){} 后 ...
- webpack前端模块加载工具
最近在看许多React的资料,发现了大部分的项目都是用webpack行模块化管理的工具.这次也是借着写了一个React-Todos的小应用,对webPack最基本实用的功能体验了一番,顺带做个小记录. ...
- Web 前端模块出现的原因,以及 Node.js 中的模块
模块出现原因 简单概述 随着 Web 2.0 时代的到来,JavaScript 不再是以前的小脚本程序了,它在前端担任了更多的职责,也逐渐地被广泛运用在了更加复杂的应用开发的级别上. 但是 JavaS ...
- 冗余代码都走开——前端模块打包利器 Rollup.js 入门
之前翻译过一篇文章,介绍了通过 ES2015 的解构赋值语法引入模块,可以让打包工具(browserify)最终编译出来的代码量最小化. 殊不知在 webpack 1.X 版本是无法利用该特性来避免引 ...
随机推荐
- Java实现验证码图片
这样的实现方式对JDK版本有要求. 1 package edu.cloud.editmap.utils; import java.awt.Color; import java.awt.Font; im ...
- Struts2 对Action中所有方法进行输入校验、单个方法进行校验
index.jsp: <body> <s:fielderror /> <form action="${pageContext.request.contextPa ...
- linux 学习之七-部分ssh命令
ssh命令 /etc/init.d/sshd restart|start|stop 重启|开始|关闭SSH的服务 ssh IP地址 连接SSH Linux scp命令用于Linux之间复制文件和目 ...
- Fibonacci Tree(最小生成树,最大生成树)
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- sql2008中时间类型问题
DATEDIFF (DD ,@sdate ,getdate() ) eg30 计算从开始日期到今天的天数 datename(weekday,@sdate) eg星期三 查询那一天是星期几 SQL Se ...
- localhost和127.0.0.1区别
详情见: http://blog.csdn.net/xifeijian/article/details/12879395
- MySQL常用指令
1.win下启动MySQL 命令行下输入: mysql –h localhost –u root -p / mysql -uroot -p 2.MySql下建表 输入命令 show database ...
- Java RMI 学习笔记
概况 功能:提供了客户辅助对象和服务辅助对象,为客户辅助对象创建和服务辅助对象形同的方法. 优点:客户不必写任何网络或I/O代码,调用远程方法就和运行在客户自己的本地JVM上对对象进行的正常方法一样. ...
- navicat查看mysql数据表记录数不断变化
在使用navicat进行数据库管理的时候,在查看表对象的时候会发现,每次刷新,数据表的记录数不断变化,尤其是大表. 对于100万的数据经常会显示九十几万,当然通过count(*)出来的数据是正确的. ...
- velocity 字符串 转化为数字
#set($nPageIndex=$request.getParameter("nIndex")) #set($Integer = 0 ) #set($FrontPageSize= ...