JS框架设计读书笔记之-小知识】的更多相关文章

这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识别的数字长度是有限制的,过大的数字计算会出现infinity或者NAN,这个好理解,但是为什么小数也会出现呢?如果从二进制的角度思考就很简单了,对于一定范围内的正数,总是可以表示成对应的二进制,但是小数就有问题了,十进制的0.5相当于热二进制的0.1,0.25 => 0.01,0.125 => 0…
节点的创建 浏览器提供了多种手段创建API,从流行程度依次是document.createElement.innerHTML.insertAdjacentHTML.createContextualFragment. document.createElement:传入一个标签名,返回此类型的元素节点.对于浏览器不支持的节点类型,也可以支持,后来被用于IE6-IE8支持H5新标签.  console.log(document.createElement('abc')); //<abc></a…
随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码. 模块的功能主要是:对象扩展.数组化.类型判定.事件绑定和解绑.无冲突处理.模块加载.domReady 之前阅读过jQuey的部分源码,对这些功能还是有感触的,比如说: 对象扩展: jQuery.extend({ merge: function(first, second) { var len = +second.length, j = 0, i = first.length; f…
基础概念 CSS样式可分为两种,一种值接近无限的集合(color,width),一种值只有几种(display),可以进行计算的样式,产生了动画效果.\ 1. 动画的第一步是获得元素的精确样式值. 2. 若要做平移,传入结束位置.距离.时长.fps. tips:fps设置多少合适? 除了人的眼睛,还要考虑到显示器的显示速度与浏览器的渲染速度.据国外统计,根据人所能感知到的变化间隔,25毫秒为最佳数值. 缓动公式 缓动公式来源于数学上的三角函数.二次项方程.高阶方程式,有了公式就可以控制移动速度.…
选择符 选择符是指CSS样式规则最左边的部分,例如 p{},#id{},.class{},p.class{} 等等 总共可以分为四大类: 并联选择器 => 逗号 => $('div,span') 简单选择器 => ID,CLASS,TAG,ATTR,* => $('#id'),$('.class'),$('div'),$('[attr]'),$('*') 关系选择器 => ' '.'>'.'+'.'~' => $('div span').$('div>spa…
setTimeout/setInterval 1. 如果回调执行时间大于间隔时间,真正的间隔时间会大一些. 2. 存在一个最小的时间间隔,即使seTimeout(fn,0),在IE6-IE8中大概为15.6ms,后来精确到10ms,IE10为4ms,其他浏览器大概也是4ms. 3. 回调时间取0时,该函数会在能立即执行的时段触发. 4. 不写第二个参数,浏览器会自动配时间. 5. IE10与标准浏览器都支持额外参数,从第三个参数起,作为回调函数的参数传入. setTimeout(function…
选择器引擎涉及相关概念 概念 以Sizzle的主函数声明为例,来说明引擎的相关概念. function Sizzle(selector, context, results, seed) { //... } 种子集seed:如果CSS选择器非常复杂,需要分几步来得到结果,那么第一次得到的元素集合就叫种子集.Sizzle引擎的解析基本上是由右到左,种子集中的一部分就是我们最后得到的元素.如果引擎是由左到右,那么就只是依次查询兄弟与子节点. 结果集results:选择器引擎最终返回的元素集合,约定要与…
这次写一些函数 1.模拟Object.keys方法 Object.keys = Object.keys || function(obj){ var a = []; // a[0],a[1]...分别赋值为obj的键 for(a[a.length] in obj); return a; } 2.repeat/字符串复制 function repeat(target,n){ var s = target,total = ''; while(n > 0){ if(n % 2 == 1){ total…
我觉得多看几本进阶的书 与其十本书读一遍,不如一本书读十遍 读书的启示: 读好书(看推荐) 精读(重复看) 能读厚书(javascript权威指南) Object.keys Object.keys=Object.keys||function(obj){ var a=[]; for(a[a.length] in obj); return a; } -----理解 obj={a:1, b: 2}; let a=[]; for (i in obj) { //a[a.length] a.length=0…
借到了司徒正美的写的js框架设计一书,司徒大神所著有些看不太懂,果然尚需循序渐进,稳扎js基础之中. 第一张开篇司徒阐述了种子模块的概念 种子模块亦为核心模块,框架最先执行模块,司徒见解应包含:对象扩展.数组化,类型判定,简单事件的绑定和写在,无冲突处理,模块加载与domReady.应具有扩展性.常用.稳定等特点. 1.1 命名空间 一观各大框架,基本是定义一个全局变量作为命名空间,如Ext的Ext等,大体抽象取例为: if(typeof(Ten)==='undefined'){ Ten={};…
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuery.HTML5.Node.js实例大全-读书笔记2   3.3 响应鼠标动作 图3-2的效果已经有了,需要鼠标来操作展示想看的照片,这就需要在相应的地方加上事件. 3.3.1 响应小照片单击动作 在3.2.3的代码里提供了显示小图列表的eg.showThumb()方法,在单击小图片时要显示大图片,这…
Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程师.全栈工程师. 本人技术积累: 3年+语义网技术研究经验: 1年+Java Web开发经验(SSH+jQuery).已读过<HTTP权威指南>.有REST架构风格的意识: 粗略读过APUE.UNP第一卷,稍微详细的读过Netty in Action MEAP5. Scope Node.js文件.…
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuery.HTML5.Node.js实例大全-读书笔记1 3.2 照片加载与定位 根据功能设计,可以先写好 HTML 结构基础,再配好 CSS 做出大致效果,最后用 JavaScript加上各种动作.首先请看 HTML 代码结构. 3.2.1 HTML 代码 CSS代码保存到 eg3.css 文件中,Ja…
需要一个新的功能添加到我们的命名空间上.这方法在JS中被叫做extend或者mixin,若是遍历属性用一下1.1代码,则会遍历不出原型方法,所以1.2介绍的是mass Framework里的mix方法. 类似juqery的$.extend(). 1.1代码 function extend(destination,source){ for(var property in source) destination[[property] = source[property]; return destin…
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] 第 3 章 用 JavaScript 实现的照片展示   构建软件设计的方法有两种:一种是把软件做得很简单以至于明显找不到缺陷:另一种是把它 做得很复杂以至于找不到明显的缺陷. ——C.A.R.Hoare,1980 年图灵奖获得者 在这个自拍自恋的时代,照片是要展示的.在前面的章节里已经讲解了事件的绑定,本章主要利用前面的知识做一…
类数组对象是一个很好的存储结构,但是功能太弱了,为了享受纯数组的哪些便捷的方法,使用前可以做下转换,通常可以使用$.slice.call()方法做转换,但是旧版本的IE下的HTMLCollection.NodeList不是Object的子类,如果采用[].slice.call()方法可能会导致异常,下面是各大库是怎么处理的: 1.jQuery的makeArray <!DOCTYPE html> <html lang="en"> <head> <…
一.在介绍DomReady之前,先了解下相关的知识 1.HTML是一种标记语言,告诉我们这页面里面有什么内容,但是行为交互则要通过DOM操作来实现,但是注意:不要把尖括号里面的内容看作是DOM! 2.HTML是要通过浏览器解析之后才会转换成为DOM节点 一般地,但我们向浏览器中输入一个地址,开始加载页面到我们看到页面的内容为止,这期间就有一个DOM节点构建的过程(浏览器将HTML标签转换为DOM节点). 当前页面上的所有的HTML标签都转换成DOM节点,这就叫DOM树建完,简称为DOMReady…
最近在看廖雪峰的js教程,重温了下js基础,记下一些笔记,好记性不如烂笔头嘛 编写代码尽量使用严格模式 use strict JavaScript引擎是一个事件驱动的执行引擎,代码总是以单线程执行 执行中会自动在每行的结尾添加分号 区分大小写 浮点数通常比较难比较大小,参考es6 number epsilon NaN, Infinity 都是number类型 NaN表示不是一个数字,Infinity表示无穷大,NaN和其他任何数字都不相等 Null 表示空值 ,undefined表示未定义 对象…
这篇司徒大神介绍了很多js的 不靠谱类型判断.篇幅也是第一篇中最常的 ,经阅读后,以后一定要用框架的自带的类型判断,万万不可随便乱用js原生判断.…
Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.1.1 Web开发的常见任务: (1) HTTP服务器负责的任务 解析请求URL.维护会话关联.持久化会话数据.解析Cookie等. (2) 业务程序可以参与的任务 检查和修改请求和响应,一些Web框架正是包装了请求和响应的传递链以方面业务程序的编码工作…
    我们长时间争论什么方案是实现域业务领域层架构的最佳方法.最后,我们用一个在线商店案例来说明,其中忽略了许多之前遇到的一些场景.在线商店对很多人来说更容易理解. 一.在线商店项目简介 1. 用例选择 Use-case Description Registers to the site The user fills in the application form and becomes an official customer of the I-Buy-Stuff site. Log in …
第五节 探索领域架构 一.领域驱动设计的价值与意义 最初在java中使用,.net要晚些才引入.领域驱动设计出现之初的争议.一个向导,少走弯路   1. 我们真的需要DDD吗? DDD并不适用于每个软件项目,因为他需要掌握一相技能,可有较高的启动成本.也不会因为一个项目简单而阻止你使用DDD,在是否DDD方面有两误区,你觉得使用他很cool,你觉得项目只有稍复杂的CRUD.使用DDD的真正价值在于理如何时解决它并合理利用它 使用DDD分析 DDD 的分析部分包括两个相关元素: 通用的语言和边界上…
导读:由于书的内容较多,内容划分也非常详尽,所以会分好几篇来写. 此页面仅作为跳转,权当个目录来用. 我会分块进行整理,大致如下: 第一章 简介 讲述javascript的历史,不打算整理,同学们大概略读一下即可. 第二至四章 讲述javascript的基本概念 对于没有任何开发经验的同学,可以先看这部分垫垫底. 第五至七章 ECMAScript 这部分是JS的核心内容,但是刚上手的同学肯定看不懂.建议先看比较简单的BOM,DOM部分. 第八.九章 BOM 介绍了JS三大核心之一的BOM,主要看…
对象扩展 说完了,对象的创建(框架的命名空间的创建)以及如何解决多库之间的命名空间冲突问题之后,接下来,就是要扩展我们的对象,来对框架进行扩展,我们需要一种新功能,将新添加的功能整合到我们定义的对象中去.这种类型的方法在Javascript中常被称为extend和mixin.在Javascript对象属性特性没有诞生之前,我们可以随意的添加.修改.删除其属性的,因此扩展一个对象十分的简单.一个简单的代码扩展方法如下: <!DOCTYPE html> <html lang="en…
命名空间 1.种子模块作为一个框架的最开始,除了负责初始化框架的最基础部分. 2.种子模块作为框架的最开始,那么什么是种子框架的最开始呢?答案是IIFE(立即调用函数表达式); IIFE(立即调用函数表达式)是现代Javascript框架最主要的基础设施,它像细胞膜一样包裹着整个框架,放置外部框架的变量污染. 3.众所周知,大多数框架在windows中立足是通过命名空间,基本上我们可以把命名空间看成是框架的名字,当然也有一些框架没有命名空间向Prototype.js,mootools等都有污染的…
DomReady其实是一种名为"DomContentLoaded"事件的名称,不过由于框架的需要,它与真正的DomContentLoaded有区别,在旧的JS书籍中m都会让我们把Js函数写到window.onload函数中,防止Dom树还没有建好,就对其操作,产生错误.…
3.1 开始使用Node.js编程 3.1.1 Hello World 将以下源代码保存到helloworld.js文件中 console.log('Hello World!'); console.log('%s:%d', 'hello', 25); 找到文件位置,执行node helloworld.js.结果如下: 3.1.2 Node.js命令行工具 输入:node --help可以看到详细的帮助信息. 除了直接运行脚本外,node --help显示的用法中说明了另一种输出hello wor…
案例:吉他搜索Guitar Inventory GuitarSpec需求变化:增加吉他弦数特性原始程序需要的变化: 1.修改GuitarSpec,构造,成员,getter 2.修改Guitar,构造,因为改类直接接收吉他特性参数,构造吉对象. 3.修改Inventory,搜索方法,因为该类直接使用吉他特性来进行匹配.另一种设计: 1.修改Guitar的构造器,让其接收GuitarSpec对象,而不是具体的吉他特性参数. 2.修改Inventory的搜索方法,其中委托GuitarSpec提供的ma…
1. Node.js 使用了单 线程.非阻塞的事件编程模式 Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计.对于高并发的解决方 案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切 换来弥补同步式 I/O 调用时的时间开销.Node.js 使用的是单线程模型,对于所有 I/O 都采用 异步式的请求方式,避免了频繁的上下文切换.Node.js 在执行的过程中会维护一个事件队 列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求…
第十三章 Web浏览器中的JavaScript 1 在Html文档中嵌入客户端4种JS代码方法     a 内联方式,放置在<script>标签之间     b 放置在<script>标签 src 属性指定的外部文件中     c 放置在HTML事件处理程序中     d 放置在URL中,"javascript:" 协议 2 在XHTML中,script标签中内容将被当做其他内容,如果JS代码包含了"<" 或 "&&q…