Node学习笔记-Node中的模块机制

之后会发表一系列的学习笔记,Node 系列的学习笔记是基于我在阅读 朴灵所著《深入浅出 Nodejs》一书的学习总结和札记。这是第一篇。 通过阅读本文章,你可以了解到: 三个重要的 JS 模块规范:CommonJS 规范、AMD 规范和 CMD 规范 Node 的模块加载机制 Node 中的内建模块、核心模块、文件模块和 C/C++ 扩展模块 Node 中的包与 NPM 三个重要的 JS 模块规范 为什么要制定 CommonJS 规范? 因为官方的规范(ECMAScript)所规范的范围太小,这些规范内只提及了最基本的一些要素:词法、类型、上下文、表达式、声明、方法、对象等规范。虽然现在已经流行起了 HTML5,但是html5 仅仅是 W3C 组织针对浏览器端的规范,对于后端 javascript 来说,仍然相对薄弱,或者说,对于 […]

新技术栈之-SASS全指南

没错,最近发文的频率提高了,主要是因为最近公司部门正在进行新技术栈的变革,从 backbone + marionette 的框架变身为 webpack + react + redux 的框架,其中拥有诸多变革,包括全版本 ES6 的推荐支持和 sass 等流行框架的运用。个人也在学习当中,学习的同时,就会把过程总结和发表出来,大家一起交流和学习。 今天带来的是 sass 的相关内容,是我对 sass 官方文档的理解和重点知识的整理。废话不多说,现在就开始吧。 sass基础 Sass 有两种语法。 第一种被称为 SCSS (Sassy CSS),是一个 CSS3 语法的扩充版本,这份参考资料使用的就是此语法。 也就是说,所有符合 CSS3 语法的样式表也都是具有相同语法意义的 SCSS 文件。 另外,SCSS 理解大多数 CSS h […]

从头复习-ES6必知必会

一、let和const 01.块级作用域 for循环的计数器,就很合适使用let命令。 另外,for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。 为什么需要块级作用域? ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。 内层变量可能会覆盖外层变量。 用来计数的循环变量泄露为全局变量。 02.无变量提升 变量一定要在声明后使用,否则报错。 03.暂时性死区 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 (temporal dead zone,简称 TDZ) 04.禁止重复声明 05.const命令 一旦声明,常量的值就不能改变。 只声明不赋值,就会报错。 ES6一共有6种声明变量的方法:var、functi […]

我也来谈谈前端的XSS攻击

其实任何项目只要做到中期,都会开始考虑安全性的问题,当然,有前瞻的设计师会在项目建立初期就考虑项目的安全性。其中前端谈到最多的就是 XSS 攻击了,其实看看能够在前端考虑解决的似乎也只有 XSS 攻击。 很多前端对 XSS 攻击有误解(当然也有可能是全世界都没有误解,只有我错了),甚至有很多前端根本不知道什么是 XSS 攻击,还有一些则认为 XSS 的预防与前端没有任何关系。至于最后这个观点,考虑到最后,其实我是赞同的,因为你永远无法通过代码可见的前端来预防别有心机的人。但是这并不意味着我们在这件事情上妥协(没错我们还能临死前挣扎一下)。 那么,什么是 XSS 攻击勒? XSS 跨站脚本攻击(Cross Site Scripting),是一种向目标浏览器内注入指定 html 或 js, 目标在访问页面的时候,会同时执行这些恶意代码 […]

秋天的味道,家的味道。

十一大学的哥们结婚,没能回家,折折腾腾两三天,终于是把事办成了,合法了。
祝福你啊@王蒙蒙 & @李萌萌,早点种蘑菇哈!我等着当干爹!
回来北京,送走哥们,走在路上突然就感觉到这不知不觉间已经秋天了。
北京的秋天太短了,短到来没来得及感受 ,他就即将溜走。
我能感觉到秋天的气息从鼻子到咽喉再到肺,满满的都是旧时的时光。

git 删除远程分支

每个迭代都会在项目里新建一个分支,时间久了项目里的分支简直不堪入目: 那么如何把这些没用的分支删除呢? 例如你要删除hooper分支,则运行下方代码: 实际上,我们是对远程push 了一个空的同名分支,覆盖了当前的分支,起到了删除分支的作用。

HTML5 手势检测原理和实现

关于作者 周林,github,陆金所前端程序员,专注 Hybrid APP 性能优化和新技术探索。欢迎任何形式的提问和讨论。 前言 随着 Hybrid 应用的丰富,HTML5 工程师们已经不满足于把桌面端体验简单移植到移动端,他们觊觎移动原生应用人性化的操作体验,特别是原生应用与生俱来的丰富的手势系统。HTML5 没有提供开箱即用的手势系统,但是提供了更底层一些的对 touch 事件的监听。基于此,我们可以做出自己的手势库。 手势 常用的 HTML5 手势可以分为两类,单点手势和两点手势。单点手势有 tap(单击),double tap(双击),long tap(长按),swipe(挥),move(移动)。两点手势有 pinch(缩放),rotate(旋转)。 接下来我们实现一个检测这些手势的 js 库,并利用这个手势库做出炫酷的 […]

IIS站点中多个父子目录web.config共存的几种办法

前段时间实在受不了mac book 上的 windows 虚拟机的延迟,所以有换成 thinkpad 了,当然,换回来之后,第一件要做的事就是配置生产环境。 以前在mac 上,使用的是 nginx 服务器,其中编译了 rewrite 模块,用于整个站点集群的重定向,由于nginx 的配置文件规则相对比较简单,公司也有配套的共享文件,可以直接把集群哪来配置,所以从来没有报过bug。 但是换成windows后,windows 下的 nginx 编译的模块很少,网上查教程又没找到编译 rewrite 模块的相关文档,所以windows 下只能退而求其次,使用iis 了。 如图所示,在stnew03下,同时含有4个项目,这四个项目每个里面都有一套专门的前端压缩规则和rewrite 规则。每个项目里面都有一个web.config 文件,所以 […]

当一个务实的程序员

在中国,大家一说程序员,总觉得只是会编程就可以了,好像是不那么需要技术含量的工作。实际上,完全不是这个样子,当一个出色的程序员是非常困难的,随着实现任务的复杂性越来越高,你需要很好的分析用户需求,设计系统架构,与项目组的人沟通,编写高效、易于维护的代码,并且不断的对设计的程序进行优化。你需要了解很多知识,包括经济学、财务、企业管理、系统架构、数学和沟通能力等,一个出色的程序员往往会成为一个系统总设计师,一个数学家,或者一个商业领导者,比如那些获得图灵奖的程序员,比如比尔盖茨。 其实一个程序员想要成长起来很不容易,但是看到很多程序员走到最后已经不再是自己当初期望的程序员了。不会去考虑程序本身的价值,而是每天想着怎么改变原来的规则,怎么去把自己看到的东西一股脑全应用到原来的项目向上,怎么创造一个更大的奇迹,怎么去实现自己3个亿的梦&# […]

前端代码异常日志收集与监控

在复杂的网络环境和浏览器环境下,自测、QA测试以及 Code Review 都是不够的,如果对页面稳定性和准确性要求较高,就必须有一套完善的代码异常监控体系,本文从前端代码异常监控的方法和问题着手,尽量全面地阐述错误日志收集各个阶段中可能遇到的阻碍和处理方案。 收集日志的方法 平时收集日志的手段,可以归类为两个方面,一个是逻辑中的错误判断,为主动判断;一个是利用语言给我们提供的捷径,暴力式获取错误信息,如 try..catch 和window.onerror。 1. 主动判断 我们在一些运算之后,得到一个期望的结果,然而结果不是我们想要的 这种属于逻辑错误/状态错误的反馈,在接口 status 判断中用的比较多。 2. try..catch 捕获 判断一个代码段中存在的错误: 以 init 为程序的入口,代码中所有同步执行出现的错 […]