前言
命名、抽象、标识是通用设计结构的主要方面,这些设计结构能被用于构造可复用的面向对象设计。设计模式确定所包含的类和实例、它们的角色、协作方式以及职责分配。
每一种设计模式都重点关注一个特定的对象设计问题或者设计要点,描述何时使用它,在另一些约束条件下是否还能使用,以及使用的效果和利弊。由于我们最终要实现设计,设计模式还是提供了示例,代码来阐明其实现。
虽然设计模式描述的是面向对象设计,但是他们都是基于实际的解决方案。这些设计方案的实现语言是主流面向对象的编程语言。
more >>like programming,like life
命名、抽象、标识是通用设计结构的主要方面,这些设计结构能被用于构造可复用的面向对象设计。设计模式确定所包含的类和实例、它们的角色、协作方式以及职责分配。
每一种设计模式都重点关注一个特定的对象设计问题或者设计要点,描述何时使用它,在另一些约束条件下是否还能使用,以及使用的效果和利弊。由于我们最终要实现设计,设计模式还是提供了示例,代码来阐明其实现。
虽然设计模式描述的是面向对象设计,但是他们都是基于实际的解决方案。这些设计方案的实现语言是主流面向对象的编程语言。
more >>如果我们认为一种模式代表一种最佳实践,那么一种反模式就代表我们已经学到的教训。反模式这个术语是1995年由安德鲁·凯尼格在当年的11月C++报告中创造的,是受“四人组”所著《设计模式》一书的启发。在凯尼格的报告中,他提出反模式的两个概念:
>
描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生;
描述如何摆脱前述的糟糕情况以及如何创造好的解决方案
从来没有系统地研究过设计模式,之前领悟出来的JavaScript设计模式那纯粹是个人兴起之作,和主流的大家们整理的设计模式还是有不少差距的。这次有幸看到了一本很不错的书。作者归纳地真的很不错,赞叹之余,不忘摘录几段分享给大家。
编写易于维护的代码,其中一个重要方面是能够找到代码中重复出现的主题并优化他们,这就是设计模式有价值的地方。
模式是一种可复用的解决方案,可用于解决软件设计中遇到的常见问题。
more >>JavaScript语言是一门优秀的脚本语言.其中包含脚本语言的灵活性外还拥有许多高级语言的特性.例如充许构建和实例化一个对象,垃圾回收机制(GC:Garbage Collecation).通常我们使用new创建对象,GC负责回收对象占用内存区域.因此了解GC,可以加深对JavaScript垃圾回收机制的理解。
GC在回收内存时,首先会判断该对象是否被其它对象引用.在确定没有其它对象引用便释放该对象内存区域.因此如何确定对象不再被引用是GC的关键所在.
more >>最近碰了个壁,公司开发的一个新项目里我大胆地提出要前后端完全分离,用JavaScript模板引擎、ajax、路由等技术替代繁琐的前后端混合的业务逻辑,项目进行到一半前辈提出来仅仅靠前端的力量无法满足公司对SEO的要求。是放弃之前的工作重新改用后端velocity模板引擎来渲染页面,把工作重心转交给Java后端,还是坚持走全后端分离路线但是另辟一条蹊径呢? 最后又来了个大胆的决定——用nodeJS搭一个中间层来渲染数据,弥补前端模板引擎和路由无法做到的SEO友好性工作。年轻就是任选,哈哈 ^_^
more >>最近碰了个壁,公司开发的一个新项目里我大胆地提出要前后端完全分离,用JavaScript模板引擎、ajax、路由等技术替代繁琐的前后端混合的业务逻辑,项目进行到一半前辈提出来仅仅靠前端的力量无法满足公司对SEO的要求。是放弃之前的工作重新改用后端velocity模板引擎来渲染页面,把工作重心转交给Java后端,还是坚持走全后端分离路线但是另辟一条蹊径呢? 最后又来了个大胆的决定——用nodeJS搭一个中间层来渲染数据,弥补前端模板引擎和路由无法做到的SEO友好性工作。年轻就是任选,哈哈 ^_^
more >> 很多来面试前端工程师的人说自己精通Javascript语言,问他call()和apply()这两个方法有什么区别,结果往往是一问三不知。
其实区分 apply和call就一句话:
这里总结了一些jQuery开发过程中的一些技巧,希望对大家有所帮助。
|
|
如果你不会原生js,只会用jquery,那么你必须懂得jquery如何做性能优化。下面我总结了一些常用的,希望对大家有些帮助。
more >>(1) 使用id来定位DOM元素是最高效的方式,如果不能直接用id找到你需要的元素,可以考虑用find()方法。
(2) 标签选择器的性能也是不错的,它是性能优化的第二选择,因为jQuery将直接调用本地方法document.getElementByTagName()来定位DOM元素。
(3) 对于类选择器,现代浏览器和IE9+ 支持本地方法document.getElementByClassName(),而对于老的浏览器如IE8 以及以前的版本,只能靠使用DOM 搜索方式来实现,这无疑对性能产生较大的影响,所以建议大家有选择性的使用它。
(4) 属性选择器无法直接实现,大多都是使用DOM搜索方式来达到效果,很多现代浏览器支持querySelectorAll()方法,但是不同的浏览器的性能还是不一样的,总的来说,使用这种方式性能并不是非常理想。所以尽量避免使用这种有害性能的方式。
(5) 伪类选择器也同样无法直接实现,jQuery需要搜索每一个元素来定位这个元素,这将是对性能造成较大的消耗,尽量不要使用,如果非用不可,就先用ID 选择器定位父元素,然后再使用该选择器。
注意:尽量使用ID选择器,尽量给选择器指定上下文。
more >>说到日历组件,网上一搜一大堆,各种插件啊、集成框架啊实在不少。但是插件有的不合需求,框架嘛依赖关系一大堆,比如jQueryUI、bootstrap等。其实现在我就是想要一个轻量级的日历组件,功能也不需要很强大,只要能兼容所有浏览器,能选择任意年份日期和星期就可以了。
tag:
缺失模块。
1、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
2、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: true raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true