`
yiminghe
  • 浏览: 1460399 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

入门:兼容 nodejs

阅读更多

   nodejs 可以在服务器端执行 javascript 脚本,并提供了一些核心模块 可以进行读写,大大扩充了 javascript 的作用范围,并且经过简单的修改,原先的客户端脚本甚至可以直接运行在服务器端,即同样的代码可以自由选择在服务器端或者客户端渲染。

 

客户端脚本转化服务器端脚本

 

windows 下安装 nodejs

 

1.下载整合版本 ,推荐0.40

 

2.解压缩至 x:/node ,并设置环境变量 PATH 指向 x:/node/bin

 

3.运行 x:/node/bin/shell.cmd ,执行 node npm install jsdom ,安装 jsdom 模块,注意一定要运行 shell.cmd

 

4.安装完毕,接下来可以通过命令行 node xx.js 来执行 xx.js .

 

客户端脚本修改:

 

1.模拟浏览器环境

 

浏览器环境下 window,document 都是属于宿主对象,全局作用域,在服务器中可通过 jsdom 来模拟,通过不指定 var 前缀来声明 global 变量 (commonjs规范并不赞成全局变量 (“no-globals” CommonJS spec),nodejs-yui3 采用封装到 Y.browser 来代替直接访问 window/document,可实现每个沙箱都有自己的独立浏览器环境 ):

 

var jsdom = require("jsdom").jsdom;
    document = jsdom("<html><head></head><body></body></html>");
    window = document.createWindow();
    location = window.location;
    navigator = window.navigator;

 2.声明 global 对象

 

客户端脚本 a 中通过顶层 var 声明的变量为全局作用域,而服务器脚本中则为模块作用域,要通过不加 var 前缀来声明全局变量,比如通过在一个模块中声明

 

S={};

 

则其他模块可和原先客户端脚本保持一致,直接访问 S 即可,不需要再做修改(不需添加:var S= require ("S")),虽然仍然是违背 no-globals 原则,但这是最简单重用客户端脚本的方法。

 

3.重写模块动态加载器(loader)

 

客户端的 loader 一般都要涉及动态添加 script 发送请求等操作,script 载入后浏览器会自动进行脚本解析,而服务器端则需要自己调用 require 来加载模块文件,另一方面也不需要发送网络请求,这时可简单对 require 进行封装,将原先的异步添加script转化为同步 require 即可。

 

 

npm 发布包

 

把所有模块都放在 lib(或其他) 文件夹中,在lib文件夹同级目录编写 package.json 文件,格式可参考:nodejs-yui3

nodejs-kissy ,主要写明包名(name),主模块名(main),版本(version),以及依赖模块(dependencies)。

 

在 lib 父目录运行 node npm publish 即可发布模块。

 

分享到:
评论

相关推荐

    ingress:使用nodejs构建可组合应用程序的实用程序

    可组合,兼容连接的中间件集成 入门(http): import ingress , { Route } from "ingress" ; class MyController { @ Route . Get ( "input-json/:name" ) greeting ( @ Route . Path ( "name" ) name : string ...

    nodejs在windows下的安装配置

    - Linux环境下安装Node.js,建议先安装Python 2.6或2.7版本,而非Python 3.0及以上版本,以兼容某些依赖项。 #### 四、在 Windows 上安装 Node.js 1. **下载安装包**: - 32位系统下载地址: ...

    spencer:Spence - nodejs 的自以为是的 API 框架

    spence - 一个简单的 nodejs API 框架 用于 Fastify 和 Postgres 的有意见的 API 框架或用于快速编码和极端可扩展性的 MongoDB 入门: 创建一个表 创建控制器 订阅更改 文档 用于 fastify 的 Api 构建库,使用可...

    jungle-db:适用于NodeJS(LMDB和LevelDB)和浏览器(IndexedDB)的简单数据库抽象层,支持高级功能,例如具有读取隔离和辅助索引的事务

    现代浏览器: indexeddb.js 浏览器向后兼容性: indexeddb-babel.js NodeJS LMDB: lmdb.js leveldb.js LevelDB: leveldb.js (不推荐) 在NodeJS中,您可以使用var JDB = require('@nimiq/jungle-db');...

    nodejs前端模板引擎swig入门详解.docx

    以下是对Swig入门的详细讲解: **1. Swig的特点** Swig支持多种主流浏览器,并具有良好的表达式兼容性,提供面向对象的模板继承机制,允许开发者将过滤器和转换应用于模板输出。它还支持路径渲染、页面重用、动态...

    split-evaluator:NodeJS SDK的包装,将对功能的评估作为微服务公开

    该服务公开了一组API,通过包装NodeJS SDK来生成服务器端对标志的评估。 兼容性 Split Evaluator支持节点版本8或更高版本。 入门 下面是一个简单的示例,描述了Split Evaluator的实例化: 通过NodeJ使用 通过npm ...

    nodejs入门

    ### Node.js 入门知识点详解 #### 一、Node.js简介 - **定义**:Node.js是一种开源的、跨平台的JavaScript运行环境。它允许开发者使用JavaScript编写服务器端的应用程序。 - **特点**: - **非阻塞I/O模型**:采用...

    Node.js 入门手册:那些最流行的 Web 开发框架.docx

    19. Ext Core for NodeJS:提供了ExtCore和ExtJS的一些基本功能,如XTemplate和Ext.util.format,用于模板和数据处理。 20. Flatiron:适应现代Web应用的框架,包括URL路由(Director)、模板(Plates)、数据管理...

    chatroom:nodejs express socket.io 聊天室

    它自动处理WebSocket连接,同时回退到其他兼容的传输方式(如polling),确保在各种网络条件下都能工作。 首先,你需要在服务器端安装Socket.IO: ```bash npm install socket.io ``` 然后在Node.js应用中引入并...

    ionic 入门

    ### ionic入门知识点详解 #### 一、搭建ionic开发环境 **1.1 安装 Node.js** - **安装步骤**: - 访问官方中文网站:[http://nodejs.cn/download/](http://nodejs.cn/download/) 或通过搜索引擎找到安装包。 - ...

    disp2:任何语言的生成器

    纯 nodejs(无任何依赖) 在所有主流操作系统上运行(如 Linux、Windows 和 Mac) 简单易学(只有两个语法) 与几乎所有框架兼容(是的,它是) 易于扩展(您可以编写自己的模块) 安装 使用 npm (TODO) npm ...

    NodeJS的模块写法入门(实例代码)

    在Node.js中,我们通常使用 `/` 或 `\\` 作为路径分隔符,但为了跨平台兼容性,建议使用 `path` 模块来处理路径。在本例中,由于模块位于当前工作目录下,我们直接使用 `./` 来表示当前目录。 此外,Node.js的模块...

    Nodejs学习item【入门手上】

    以上内容涵盖了Node.js的入门指南、环境搭建、基础Web服务器的创建、模块化编程、版本控制和API的同步问题、核心API的使用以及Stream和EventEmitter的介绍。通过这些知识点的了解,初学者可以构建起Node.js的基本...

    up and running with nodejs

    ### Node.js 入门与实践 #### 一、书籍简介 本书《Up and Running with Node.js》是一本全面介绍Node.js技术的指南,适合初学者快速掌握Node.js的基础知识及应用技巧。根据描述,该书并没有公开的电子版本,但读者...

    node.js入门手册:那些最流行的web开发框架 (1).docx

    本篇文章将探讨一些最流行的Node.js Web开发框架,帮助初学者快速入门。 1. **actionHero** - actionHero 是一个最小化的事务性API框架,适用于socket和http客户端。它提供了全面的API开发工具,支持实时通信,是...

    nodejs.osapi:通用的对象存储API

    “ osapi”或“ ceph” 通用和CEPH兼容的对象存储API 其他语言//如果本文档中的链接不可用,请直接访问 。... 目录开始使用OpenStack Swift风格入门AWS S3风格入门文献资料条款关于参考 链接变更记录主页 开始使用

    HTML5基本的学习路线怎么学.docx

    6. NodeJS全栈开发:掌握NodeJS基础、核心模块和Express框架,学习数据库知识。 7. 大数据可视化:了解数据可视化基础,学习D3.js和其他JavaScript库,实现数据的直观展示。 这个学习路线涵盖了从基础到进阶的各个...

    node-firebird-libfbclient:Firebird SQL绑定

    与节点流类兼容的Blob流 准备好的陈述 至于现在的计划是: 连接池支持 准备的报表池 连续重构 更多测试 服务api 入门 在Linux,Windows和MacOS X下 您将需要:NodeJS(已通过v8.x或更高版本测试)Firebird(已通过v...

    nodejs前端模板引擎swig入门详解

    1. 支持大多数主流浏览器,意味着其渲染的结果在各种设备上都能保持良好的兼容性。 2. 表达式兼容性好,能够更好地与JavaScript代码进行交互。 3. 提供面向对象的模板继承方式,这允许开发者将通用的页面结构定义在...

Global site tag (gtag.js) - Google Analytics