首页 关于我们

首页

小明&小艺在一起的时光

javascript模板
最早使用的js模板是这样子的 123456String.prototype.template = function(e, t) { return this.replace(t || /\${([^{}]*)}/g, function(t, r) { return e[r] !== undefined && e[r] !== null && e[r].toString() || "" } )} 主要是通过正则来匹配,替换数据,不足之处是不...
node模块加载
node的模块分为核心模块和文件模块,核心模块是node提供的内置模块,在node源码编译过程中,编译进了二进制执行文件,部分模块在node进程启动时就已经加载进内存中;而文件模块则是运行时动态加载。正如浏览器的缓存一样,node会对引入过的模块进行缓存,以减少二次引入的开销;不同的是node会缓存模块的结果对象而不只是文件。模块的加载包括三个步骤: 路径分析 文件定位 编译执行 路径分析node的require方法接受一个标识符作参数,实现模块加载,而该标识符主要有以下几类: 核心模块,如http、fs、path等 .或者..开头的相对路径文件模块 以/开始的绝对路径文件模块 非...
reactjs总结
在项目中使用了reactjs框架,其对组件更加彻底,编写起来也更加方便。对外暴露的接口、api也不多。在这里想总结一下: ReactElement:拥有四个属性type,props,key,ref,不携带方法,原型上什么都没有 ReactNode:可以是ReactElement、string、number、ReactNode实例数组(ReactFragment) ReactComponent:组件,一个简单的js类,构造函数 React.unmountComponentAtNode只可以移除有React.render方法渲染的组件,而对其内部的子组件无效,会返回false React....
css居中显示
在页面中居中可以分为水平居中和垂直居中。对水平居中常用的是margin: 0 auto,浏览器会自动计算左右的margin,那同时要实现垂直居中呢?可以如下:12345678.absolute-center { margin: auto; position: absolute; overflow: auto; top: 0; left: 0; bottom: 0; right: 0; width: 50%; height: 50%;} 这种做法可以兼容ie8-ie10,但是必须要有宽高。 除此之外,也可以通过left和top设置为50%,再加上margin...
js的垃圾回收机制
简介js无法管理内存单元,内存的分配和回收都是自动进行的。但是自动并不意味着可以不用管。如果自动分配的内存,因为使用问题而无法释放,这就会造成内存泄露了。要了解js的垃圾回收,先得清楚内存的生命周期。不管什么语言,内存生命周期基本一致:分配所需空间 –> 读写分配的内存空间 –> 不需要的时候将其释放\归还 。那垃圾回收则是跟第三步相关。那回收的关键就落在如何判断“不需要”了。全局变量不会被回收,局部变量才可以回收。 要想完全将无用的内存释放掉,显然是无法通过某种算法做到的,垃圾回收只能近似地把无用的内存回收。而这种近似地算法有:引用计数和标记-清除。 引用垃圾回收算法主要依...
Backbone总结
为什么选择Backbone项目之初,需要选择一个框架作为底层开发,当时想到的是angular、backbone、vue,其都是MV*的开发方式。而我考虑的几点是 学习成本低,可以快速上手 框架的利用率和总体体积 框架的更新周期 框架的讨论热度兼顾这几方面,选择了Backbone。Backbone的视图功能是比较单一和广泛的,可以随意使用,没有太多的条条框框。但是不足的是Collection和Model的功能跟View不匹配,View对于Collection和Model而言显得有点功能单薄。 BackboneBackbone的视图创建很简单,只是创建了几个公共的方法和提供一些事件监听和...
影子(shadow)DOM
shadow dom是一种把类的概念迁移到html上的实践,主要是解决一个文档中可能需要大量交互的多个dom树的建立以及其各自的功能边界问题。目前只有少量浏览器支持,下面一起来了解webkit中的shadow dom。 在代码编写过程中,我们常常会定义一个组件,把只关乎自身的东西内聚。例如:react的自定义组件、或者其他MV*框架中的组件。但这其实只是逻辑上的独立,再HTML中,它并没有独立开来,所有的节点也都是交由最顶级的HTML管理。对DOM树的遍历或者样式的选择,都会当来潜在的弊端。如果我们可以实现DOM树的封装和独立,使不同的DOM树之间可以相互独立,又可以独自渲染;那势必会使...
浅析模块化和seajs
模块化带来的问题前端交互的复杂和更新的频繁,对程序的可维护性和健壮性提出了更大的要求。基于本地文件的后端模块化,给了前端模块化很大的启示。模块化开发给维护和开发带来了很大的好处,每个功能按模块区分,不同功能通过接口沟通,各司其职,各行其道。那么模块化就要求一个功能一个模块,但是js语言本并没有模块化的功能,也无法声明模块的依赖,而且一个模块一个请求,这在分秒必争的浏览器显然是一个逆发展。总的来说,模块化需要解决以下问题: 模块的声明定义和接口的导出 模块的依赖机制 资源的优化整合 解决了以上问题,才能让模块化成为可能。 如何模块化模块的声明定义和接口的导出 js语言里本身不具备模块的...
javascript的继承
继承的基础Brendan Eich在设计js语言时,面向对象编程正值兴盛之期,而定位为简易脚本语言的js需不需要兼顾面向对象的功能呢?Brendan Eich的答案是肯定的。但是js里面,函数、Object、Array等一切都是对象,也没有Class的类概念。那得用什么机制让对象联系起来呢?Brendan Eich想到了构造函数,通过new直接接一个构造函数来生成一个实例,也就是把类的概念和function糅合在一起,但是简单的构造函数与类的区别是无法共享属性和方法,function内部的都是实例new出来的对象特有的属性或方法。考虑到这一点,Brendan Eich给每个函数添加了pr...
miniwa
keep it simple, keep it stupid