关于JS框架的一点想法
读了几页《vue.js设计与实现》,记录几点想法:
1.Html是根本
2.无论哪个框架,不管是运行时框架,还是编译时框架,最终都要通过标签“绘制”页面
3.这个“绘制的过程”就是渲染,渲染由浏览器完成。
4.静态网站的渲染是最快的,没有所谓的“编译”环节消耗。
5.为啥搞这么多新技术出来呢?一是直接写每个页面太繁琐,系统稍大一点几乎就不可能完成任务。二是浏览器能力越来越强,有了硬件上的基础。
6.上面说了,不管是那种框架,最终目标都是转为html代码。一般来说,源码有如下两种:
(1)字符串;(2)json格式。(3)可能还有其它格式
比如,这段代码:
<div><span>世界你好!</span></div>
A:最基本的逻辑:放在标准的html文档里,自动就执行(“绘制”或者说渲染)。
B:字符串转换:
let txt = '世界你好!';
let html = "<div><span>"+txt+"</span></html>";
document.body.appendChild(html);
经过字符串拼接和appendChild两个步骤,才到了A的阶段——浏览器可直接绘制的阶段。
C:JSON转换
const obj = {
tag: 'div',
children: [
{tag:'span',children:'世界你好!'}
]
}
这种json数据又如何转为可被浏览器直接识别并绘制的html代码呢?
只能用JavaScript来辅助实现了。
function Render(obj,root){
const el = document.createElement(obj.tag);
if(typeof obj.children === 'string'){
const text = document.createTextNode(obj.children);
el.appendChild(text);
}else if(obj.children){
obj.children.forEach((child)=>Render(child,el));
}
root.appendChild(el);
}
通过调用
Render(obj,document.body)
才能到达A的阶段——浏览器可直接绘制的阶段。
7.如果页面很少,那么用A的方法最简单效率最高。
8.如果稍微负责一点的,用B的方法也不错,不费脑子好理解,符合直觉(过程性框架的优势)
9.页面比较多,而且页面元素复杂,那么,还是用C比较好,只要按照规则写好代码,转换(编译)的事情由框架代劳,不用去费那个脑子。
10.正常情况下,后两种效率差不多。但是,当涉及到局部绘制(局部渲染)的时候,效率就差多了。
关于JS框架的一点想法的更多相关文章
- 关于Java的一些NIO框架的一点想法
闲着有点无聊想写点东西. 问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我 ...
- (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]
https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...
- 不要再使用JS框架了
停止编写Javascript框架吧. Javascript框架就好像死亡和税收一样:终究不可避免它的存在.我确信如果我是那面墙上的一只苍蝇,每次有人开始一个新的网页项目时,第一个问题肯定是我们用的是哪 ...
- JS框架
s框架就是将常用的方法进行封装,方便调取使用.一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方 ...
- 前端Js框架汇总
概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...
- js框架简明
jquery 主要战场还是在dom这块.其它经典怀旧的2个需要了解一下,mootools, prototype.是他们启发了js向工程化,团队化,协作化发展的转变,yui虽然听说停止开发了,但他的代码 ...
- 8款JS框架比较
Dojo Dojo 是目前最为强大的JS框架,它在自己的 Wiki 上给自己下了一个定义,Dojo 是一个用 JavaScript 编写的开源的DHTML工具箱.Dojo 很想做一个“大一统” ...
- js 框架都有哪几种(转载)
目前来看,js框架以及一些开发包和库类有如下几个,Dojo .Scriptaculous .Prototype .yui-ext .Jquery .Mochikit.mootools .moo.fxD ...
- 不可错过的Node.js框架
前言 Node.js是由Ryan Dahl于2009年创建的.它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的. ...
- 前端Js框架 UI框架汇总 特性 适用范围 选择
身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...
随机推荐
- 中电金信通过KCSP认证 云原生能力获权威认可
中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商. Ku ...
- [双体系练习]Java基础易错点
toCharArray()和split()的区别. toCharArray() 这个方法将一个字符串转换成一个字符数组.每个字符都会成为数组中的一个元素. 返回值:一个包含字符串中所有字符的char数 ...
- springboot连接mysql报错errorCode 0, state 08S01
前言许久未维护的项目需要检查一些数据,重新运行项目发现有create connection SQLException ,具体报错信息是 errorCode 0, state 08S01 . Sprin ...
- consul注册和删除命令
curl -X PUT -d '{"id": "redis-xxx","name": "redis-xxx"," ...
- 启用Linux防火墙日志记录和分析功能
防火墙的基本功能是阻止来自可疑网络/来源的连接.它会检查所有连接的源地址.目的地址和端口,并决定是否允许或阻止流量.防火墙的每个操作都会记录为日志数据.监控和分析这些日志对于保护您的网络免受攻击至关重 ...
- Qt音视频开发26-监控画面各种图形绘制设计
一.前言 视频监控系统做到后面,逐渐需要搭配人工智能算法,将算法计算后的信息以OSD标签以及方框各种图形的信息显示到视频中,这种当然和OSD一样也是有两种方式,一种是源头就贴好了,一种是将结果发给软件 ...
- C#使用Tesseract C++ API过程记录
Tesseract Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献.Tessera ...
- Idea中@Autowired 黄色波浪线问题以及注入类显示红色波浪线问题解决
解决办法: 点开路径:File--->Settings--->Editor--->Inspections--->Spring--->Spring core--->C ...
- [转]MySQL和MySQL驱动mysql-connector-java升级到8.0.X版本
原文链接:MySQL和MySQL驱动mysql-connector-java升级到8.0.X版本
- [转]WorldWind开发中WorldWindowGLCanvas .setPreferredSize()函数找不到
值高温假期,无意翻到了csdn中三维GIS开发的专栏,讲的是worldwind Java三维GIS系统开发的东西,十分感兴趣.恰巧要求的环境已经存在,直接耍起来.将最新的Worldwind和JOGL下 ...