NodeJS

exports与module.exports的区别

拜拜、爱过 提交于 2021-01-27 06:46:46
exports 是 module.exports 的一个引用,只是为了用起来方便。当你想输出的是例如构造函数这样的单个项目,那么需要使用 module.exports 。 使用exports circle.js var PI = Math.PI; exports.area= function(r){ return PI*r*r; } exports.circumference =function(r){ return 2*PI*r; } app.js var circle = require('./circle.js'); console.log('the circle of radius is 5'+circle.area(5)); console.log(circle.circumference(5)); 使用moduls.exports circle.js var PI = Math.PI; module.exports = function(r){ this.radius = r; this.area = function(){ console.log('the circle is area ='+PI*this.radius *this.radius); } this.circumference = function(){ console.log('this circle

Socket.io的集群方案

北慕城南 提交于 2021-01-14 08:05:01
介绍 Nodejs因其简单方便,在服务端应用市场也开始占有一席之地,其另外一个分支--socket.io(最后跟nodejs好像又要合并了),特别适合聊天室、白板(document collabration)、在线实时计算、计数器等应用,如果要支持大容量应用,就需要使用集群技术了,下面逐一讨论常见的socket.io集群方案。 集群方案 在官网介绍的方案有使用ngix反向代理方案。这种方案比较简单不需要修改业务代码可以直接布署,通过iphash轮调算法保存用户分配到同一个进程。 vi /etc/nginx/conf/nginx.conf http { upstream io_nodes { ip_hash; server 127.0.0.1:6001; server 127.0.0.1:6002; server 127.0.0.1:6003; server 127.0.0.1:6004; } server { listen 3000; server_name io.yourhost.com; location / { #为支持转发WebSocket数据,加上upgrade头 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X

[NodeJS for Android]完美编译大全

℡╲_俬逩灬. 提交于 2020-04-27 11:37:09
NodeJS for Android完美编译大全 完美地编译了NodeJS for android-{arm,arm64,x86,x64,mipsel},并且提供预编译版,和作为持续编译环境的Docker image。 完美, 意思是不去掉任何功能(不加 --without-... 选项),尽量不修改任何源码(包括编译设定文件)。 借助工具 android-gcc-toolchain 实现了这个目标。见 Full Build )。这个工具 让人快捷地使用NDK的独立toolchain做交叉编译,并且有些奇妙的功能。 编译好了的二进制文件(arm,arm64,x86,x64,mipsel构架) 可以直接下载。 一个编译环境用的Docker image osexp2000/build-nodejs-for-android 可以用来按自己的需求编译. 见 Docker Images . 由头 交叉编译,是个不大不小的土活儿,很无聊,很干扰正题。 一开始我也没想要搞什么完美编译,我只是因为对 NDK有怨念 , 所以做了个辅助工具 android-gcc-toolchain ( 这里有简单介绍 ), 以便顺利地做交叉编译。于是一般的交叉编译过程变轻松了之后,就凸显出NodeJS的编译错误了。 编译NodeJS for Android,目前都是去掉某些功能,或者修改源码里的编译设定

Vim Plugins For Node.js

做~自己de王妃 提交于 2020-04-12 11:56:29
使用Vim作为Node.js的IDE环境也是个不错的选择。 Vim: http://www.vim.org/download.php Node.js在Github上也有一篇关于Vim插件的推荐文章。 https://github.com/joyent/node/wiki/Vim-Plugins 下面就整理一下配置Vim的一些步骤。 1. Pathogen 这是Vim中用来方便管理插件的插件,有了它,之后介绍的很多插件安装就会显得简单。 在~\vimfiles下新建两个文件夹,~\vimfiles\autoload和~\vimfiles\bundle 复制 pathogen.vim 到~\vimfiles\autoload\pathogen.vim 记事本打开~\_vimrc,在最后加入如下代码: "自动缩进 set autoindent "语法高亮 syntax on "自动检测文件类型并加载相应的设置 filetype plugin indent on "不自动换行 set nowrap "智能对齐方式 set smartindent "一个tab是4个字符 set tabstop=4 "按一次tab前进4个字符 set softtabstop=4 "显示行号 set number "缺省不产生备份文件 set nobackup call pathogen#infect() 2.

Nodejs学习笔记

做~自己de王妃 提交于 2020-04-10 14:39:35
安装配置 #debian环境,下同 apt-get install nodejs apt-get install npm #验证 nodejs -v npm -v Hello World 创建server.js // 引入http模块 var http = require("http"); http.createServer(function (request, response) { // Http头部:响应码200,类型文本 response.writeHead(200, {'Content-Type': 'text/plain'}); // 输出正文 response.end('Hello World\n'); }).listen(8080); // 终端输出log console.log('Server running at port:8080'); 启动 nodejs server.js Npm简介 nodejs的包管理工具,可以从npm官方服务器导入第三方发布的模块,也可以发布自己的。常用命令: #查看当前安装的模块 npm ls #安装第三方模块,如express npm install express 反馈安装路径和版本号,而模块的包定义文件package.json在“应用目录/node_modules/express”下。 版本号约定:大版本号.小改进版本号

Completely Uninstall Node.js from Mac OS X

折月煮酒 提交于 2020-04-07 20:48:13
安装:Nodejs V5.5.0 执行:sudo npm -v 报错: Error: Cannot find module 'minimatch' at Function.Module._resolveFilename (module.js:339:15) at Function.Module._load (module.js:290:25) at Module.require (module.js:367:17) at require (internal/module.js:16:19) at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/rimraf/node_modules/glob/glob.js:44:17) at Module._compile (module.js:413:34) at Object.Module._extensions..js (module.js:422:10) at Module.load (module.js:357:32) at Function.Module._load (module.js:314:12) at Module.require (module.js:367:17) 解决: 彻底删除node和npm各个模块,重新安装 内容 Completely

nodejs + cardova + ionic安装环境(持续更新)

烈酒焚心 提交于 2020-04-07 20:43:49
安装环境: Ubuntu 14.04 64-bit NodeJs安装 官网 https://nodejs.org 速度太慢 国内镜像: https://npm.taobao.org/dist 下对应版本即可 下载: node-v4.2.1-linux-x64.tar.gz 解压 查看bin目录: node, npm. $node/bin 这个目录加到PATH中, 或是链接 node, npm到/usr/bin中 node -v 查看是否安装成功, NodeJs到此安装完成. 1.1 配置npm的模块全局安装目录 (暂且跳过): # 先查看配置 npm config ls #设置 npm config set prefix '~/nodejs/module' #将 {prefix}/bin 即: ~/nodejs/module/bin 加入到 PATH中, 才能在命令行中直接用模块命令 #PATH修改后记得重新source才能生效 1.2 npm使用国内淘宝镜像 http://npm.taobao.org/ 查看说明 使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm : 命令如下: npm install -g cnpm --registry=https://registry.npm.taobao.org 安装模块 $ cnpm install

nodejs 异步编程 vs promise用法

六月ゝ 毕业季﹏ 提交于 2020-04-07 05:57:42
零、关于异步 如图,是一个传统nodejs项目中比较容易看到的一种编程风格,其原因是因为nodejs底层的很多异步方法都是通过配合回调方法来实现的。理解异步我们必须掌握以下几个知识点: 1、单线程 JavaScript的引擎是单线程的,即无论是在浏览器环境还是基于JavaScript引擎的nodejs服务器环境有且仅有一段代码正被执行,JavaScript引擎不会同时执行a函数的代码和b函数的代码。 2、JavaScript轮询机制(主线程 VS Event Loop线程) 轮询(event loop)简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线程"(可以译为"消息线程")。 就是说执行我们程序员写的代码的是主线程,当主线程遇到io操作的时候, 主线程就 通知 Event Loop线程去执行相应的I/O程序,自己则继续执行其他代码,当Event Loop线程把io任务完成后会主动告诉主线程我已经执行完了,主线程收到通知后会调用事先准备好的回调函数,完成整个任务。 基于以上原因早期的nodejs 代码会存在大量的callback函数嵌套,这些callback正是为主线程在收到Event Loop线程完成io操作后准备的回调函数。 3、如何与Event

nodejs+express+mongo 实际一套增删改查的接口

杀马特。学长 韩版系。学妹 提交于 2020-04-07 02:12:26
nodejs+mongoose+express 实现数据的增删改查 定义数据模型 //bear.js var mongoose=require('mongoose'); var Schema=mongoose.Schema; var BearSchema=new Schema({ name:String }); module.exports=mongoose.model('Bear',BearSchema); package.json { "name":"node-mongo-express", "version":"1.0.0", "description":"实现数据的增删改查", "main":"server.js", "license":"MIT", "dependencies":{ "express":"~4.0.0", "mongoose":"~3.6.13", "body-parser":"~1.0.1" } } 实例代码 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/myapp

NodeJS开发者-资质分级评判标准

橙三吉。 提交于 2020-04-06 19:32:23
这回须纯属本人杜撰,但也是参考过诸多Node资料之后的断言,仅供参考。 ###》》 初级 独立完成node开发环境在制定系统平台的安装配置;熟悉javascript语言语法规范;熟悉JSON数据结构;了解CommonJS模块机制和包规范;了解异步IO和异步编程的特点,掌握回调函数、事件触发等方法进行流程控制;了解并实际使用过HTTP、WebSocket等网络编程协议;了解基本的路由控制、MVC、模板等概念;掌握npm镜像源的设置,掌握npm引用文件的编写;能够使用express、koa.js、socket.io、forever等常见模块初始化搭建可供开发的工程框架;掌握基本的SVN、Git版本控制工具的使用;基本的shell脚本操作;具备基本的代码调试能力; ###》》中级 良好的javascript代码编写规范,如命名规范和注释规范等;熟悉JSON数据格式的解析方法;了解mongodb、redis等NoSQL数据库的使用;有独立解决问题的思维方式;善于沟通协作;了解CommoJS模块引用的机制,以及引用过程中的编译、加载规则(如路径分析和文件定位);了解异步IO的实现原理,以及异步编程中如Promise等关于嵌套函数过甚的解决方案;掌握内存控制、垃圾回收的方法;了解RESTful、页面渲染、页面响应、和页面模板的使用;了解进程间消息传递;会编写基础的单元测试、性能测试