js在光标处插入节点

之前做一个编辑器,需要实现在<pre>中按下tab的时候插入四个空格,因为js是半路出家,研究了好久。思路是获取当前的selection,拿到对应的range,对range进行操作后替换掉原来selection对应的range。

下文是从  Kejun's Blog  转来的  [javascript]在光标处插入正解 ,给大家一个思路:

之前在网上也找过类似的资料,国内网站介绍的都是老掉牙的方法不兼容标准浏览器。正确的方法是正确运用Selection对象和Range对象,实现在光标当前位置插入文本或结点。但是这两个对象在IE和标准的DOM方式的运用方法是不同的。

思路:首先获得用户的选区(光标当前位置可理解成起始和终止位置一样的选区)。然后,从Selection对象转成Range对象。目的是利用Range对象的方法插内容进去。最后,插入动作结束后将光标移到插入内容的后面。

实现:

让web UC好用点

因为工作的关系,要用UC,而最近把开发环境换成了linux。一下子UC成了问题,开始的时候wine一下,发现各种错误,没办法改用web UC。

web UC真的很简单,简单到吐血……来了消息半天也看不到,只好写个chrome插件给web UC做扩展。附件里是chrome的 web UC扩展,只要在解压后用chrome打开就可以安装了。

这个扩展主要功能是web uc有未读消息时使用chrome的提示系统进行提示,使用方法很简单,安装后进入web uc点击“开启通知”,然后允许通知系统就可以了。

目前这个扩展还有点问题,主要是样式方面的,不过用起来会方便一些。总觉得用web UC的技术应该还是有的,于是把这个扩展放到这里给大家使用。

(ps:chrome应用发布需要5美元……本人不是前端,也不打算常开发chrome插件,想想还是放到博客上好了。。)

插件下载:  easy-uc.crx

6月18日更新:euc_1.0

 

深入Node.js的模块机制

这几天研究nodejs,对模块的机制不了解找到一篇不错的文章转来做备忘。转自InfoQ的: 深入浅出Node.js(三):深入Node.js的模块机制

Node.js模块的实现

之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着墨不多。在后续介绍模块的使用之前,我认为有必要深入一下Node.js的模块机制。

CommonJS规范

早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物。无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值。但是随着JavaScript在前端的应用越来越广泛,以及服务端JavaScript的推动,JavaScript现有的规范十分薄弱,不利于JavaScript大规模的应用。那些以JavaScript为宿主语言的环境中,只有本身的基础原生对象和类型,更多的对象和API都取决于宿主的提供,所以,我们可以看到JavaScript缺少这些功能:

  • JavaScript没有模块系统。没有原生的支持密闭作用域或依赖管理。
  • JavaScript没有标准库。除了一些核心库外,没有文件系统的API,没有IO流API等。
  • JavaScript没有标准接口。没有如Web Server或者数据库的统一接口。
  • JavaScript没有包管理系统。不能自动加载和安装依赖。

于是便有了CommonJS(http://www.commonjs.org)规范的出现,其目标是为了构建JavaScript在包括Web服务器,桌面,命令行工具,及浏览器方面的生态系统。

继续阅读

初试Node.js

其实这也不算什么初试了,最初Node.js火起来的的时候,曾经最websocket的时候接触过一次,但是这次的接触却更加全面一些,同时也了解了更多node.js的东西。NodeJS把客户端的语言成功的转移到服务端,让一个大家都熟悉的语言变得更加通用。

首先Nodejs使用的是javascript,这是一门很神奇的语言,很多人从接触web就用它,却不精通它,它一直很火,却不是被人重视的语言。使用nodejs最大的优势莫过于服务端和客户端都可以使用js了!我们可以重用一些代码,比如用户验证!这会给我们带来可重用的代码,还有更多好用的js库。

然后是Nodejs的非阻塞特性,这应该是使用javascript的原因,因为它是基于时间的。但这并不意味着你的代码就一定是非阻塞,如果你的代码是顺序执行的话。非阻塞特性也并非是新概念,但是有些时候的确是很有价值的。之前了解过tornado,这是一款基于python的非阻塞web框架(服务器),所以非阻塞不是nodejs的独家特性,但却是重要的特性。

最后是nodejs的扩展,我们可以通过npm来获取你希望得到的包,比如socket.io、express之类,很方便。

总体来说,nodejs还是很不错的,入门简单,使用方便。目前只是不知道效率如何了。