category : JavaScript|NodeJs

JavaScript跨域请求的方方面面

什么是跨域JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下。首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。

JS原生编解码函数

编解码的需求当你在百度输入一个关键字搜索的时候,你会发现搜索的url是被转义处理了。这里为什么要转义呢?一方面为了避免XSS,一方面可以做到通用处理,对特殊符号进行转义处理,避免引起未知的错误。JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。

fabric.js之強大的SVG处理工具类库

什么是Fabric.js使用 Fabric.js 你可以创建和填充画布上的对象,从简单的几何图形到成百上千路径组成的复杂图形。你可以通过鼠标轻松的移动、缩放和旋转这些对象,修改它们的属性(颜色、透明度,层叠顺序)等等。

JS模板引擎之JST语法

什么是模板引擎首先来说说,为什么要用javascript模板。以PHP为例,PHP本身就可以穿插于HTML之间,所以也算是一种模板语言,缺点就是代码看起来会有点乱,尤其是融合了各种循环,判断,赋值等等操作(也不方便格式化),没有做到结构和数据分离。当然PHP也有很多的模板引擎,使用这些模板引擎的一个缺陷就是,效率不如原生的PHP高。没错,可以生成缓存文件,但对于更新相对频繁的站点就不行了。这个时候或许可以考虑javascript模板技术了。使用了javascript模板,就把解析压力交给了浏览器,服务端只需要提供要用到的数据即可。

Webpack模块加载神器

什么是WebpackWebpack 是德国开发者 Tobias Koppers 开发的模块加载器。Instagram 工程师认为这个方案很棒, 似乎还把作者招过去了。在 Webpack 当中, 所有的资源都被当作是模块, js, css, 图片等等..因此, Webpack 当中 js 可以引用 css, css 中可以嵌入图片 dataUrl。对应各种不同文件类型的资源, Webpack 有对应的模块 loader, 比如 CoffeeScript 用的是 coffee-loader, 其他还有很多:http://webpack.github.io/docs/list-of-loaders.html

AMD与CMD规范-javascript模块化

模块化思想模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在。对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得“有理可循”。

异步回调之Promise对象

异步思想你可能知道,Javascript语言的执行环境是”单线程”(single thread)。所谓”单线程”,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。

基于Nodejs创建https服务

为什么用https服务关于https协议和相关加密算法,请参考我的另一篇:HTTPS详解SSL/TLS。很多情况下,为了保证服务器的安全,比如我在服务端搭建了一个rest服务,这时候如果采用http的协议,很不安全,大部分的做法是http+web json token,但是对于token的处理也是比较棘手的。如果是对外提供开放接口,比如像百度、腾讯这些第三方开放平台接口,比如登录授权这些,可以采用http+OAuth2.0解决。对于自己做得服务器来说,如果涉及到支付交易这些,后台采用HTTPS+session的做法比较好。

NodeJS+mongoDB部署到Linux

部署需求这几天把之前做的关于FIDO认证系统的DEMO程序部署到服务器上,想到去年买了一台Aliyun的服务器,应该还没有到期,所以就试着部署到服务器上。我的阿里云是RedHat 4.1.2的系统,使用起来还是很方便的。

正确使用“use strict”

前言看一些开源项目的时候,觉得别人的代码确实写得好,一些细节都做得很到位。这里介绍一下如何合理使用“use strict”,自己写一些js类库的时候,不放严格要就自己。从多角度考虑,避免细节出错。