node学习尝试

早上看了张丹大牛博客文章nodeJS学习路线图和node从零入门系列,感觉获益匪浅,尝试了里面几项内容,对node有了更深入的认识。

npm

npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。常用命令:

1、npm install moduleNames:安装Node模块
安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。
注意:node的安装分为全局模式和本地模式。
一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。
在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。全局安装命令为npminstall−gmoduleName。获知使用npm set global=true来设定安装模式,$npm get global可以查看当前使用的安装模式。

代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的
npm install --save
安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。
2、npm list:查看当前目录下已安装的node包
注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当前安装的所有node包
更多命令请参看npm官方文档:https://www.npmjs.org/doc/

express

类似于SSH中的Struts,最新为4.x版本,不能完全兼容3.x版本,可以很方便的生成项目架构.

Redis

尝试了文章中一些例子,发现里面很多用了MongoDB,就想学习下这个文档型数据库。

  • 好处是:简单快速,海量数据存储;类似JS查询形式;简单文档类似关系数据中行记录,一组文档构造成集合(类似关系数据表),一组集合构成数据库(可以做独立权限控制等)
  • 坏处是不支持事务,数据可能会丢失;并且搜索网上博客文章它并不如一个分支Tx和Postgresql;并且向去它官网下载总是报错,安装包大小也远大于Pgsql,后放弃用它,计划用Redis和Pgsql代替之。
    尝试用Redis代替MongoDB的session缓存实现,感觉Redi初体验很好;
  1. 安装包很小,1M多,启动后就可以工作;
  2. 操作也简单,支持缓存,数据持久化,在一些简单领域可当数据库用。
  3. 需要用以下两个模块引入:

    1. var session = require('express-session')
    2. ,SessionStore = require('connect-redis')(session);
    3. var store = new SessionStore({
    4. host: '127.0.0.1',
    5. port: '6379'
    6. });
    7. var store = new SessionStore({
    8. host: '127.0.0.1',
    9. port: '6379'
    10. });

    Session是什么?

Session 是面向连接的状态信息,是对 Http 无状态协议的补充。

Session 怎么工作?

Session 数据保留在服务端,而为了标识具体 Session 信息指向哪个连接,需要客户端传递向服务端发送一个连接标识,比如存在Cookies 中的session_id值(也可以通过URL的QueryString传递),服务端根据这个id 存取状态信息。

在服务端存储 Session,可以有很多种方案:
1.内存存储
2.数据库存储
3.分布式缓存存储
随着网站规模(访问量/复杂度/数据量)的扩容,针对单机的方案将成为性能的瓶颈,分布式应用在所难免。所以,有必要研究一下 Session 的分布式存储。

git

在尝试socket.io时官网无法打开,后上github下载,在按说明文档操作,进入目录下执行npm install命令时发现包git找不到失败,下载git客户端便携版加入环境变量后解决。

使用MarkDown

今天看很多说明文档都是.md格式的,也再次意识到md的流行和方便,故决定在后面写文章时坚持使用md形式。

wiz笔记md插件安装

https://github.com/akof1314/Wiz.Editor.md
是一个很方便的md插件,最吸引我功能是右边可实时显示,但在github下载Wiz.Editor.md.wizplugin后不知道怎么安装,尝试按网上说的拖到wiz上,或者用wiz打开插件都无法正常安装,最后把文件解压放到wiz笔记插件包里,解决了问题。

2015第40周一Node学习的更多相关文章

  1. 2015第40周二Node学习

    node历史 今天看cnode开源项目用了io.js,在查这个项目时发现这篇文章node历史,node.js和io.js关系谈到Node.js的由来,不可避免要聊到它的创始人Ryan Dahl.在20 ...

  2. [学姿势]实验室搬砖+node学习

    这周开始进行收尾工作,我当然没有进行核心技术的开发,主要负责的是对web端进行展示上的修修补补,主要包括添加VLC播放器.rtsp视频流以及一些js细节. 1.VLC 全称为Video Lan Cli ...

  3. node 学习资料

    Node 学习资料: 资料名称 网址 Node.js 中文API文档 http://nodejs.cn/api/ Node 菜鸟教程 http://www.runoob.com/nodejs/node ...

  4. Node学习HTTP模块(HTTP 服务器与客户端)

    Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基 ...

  5. node学习笔记第一天

    ES6---* JavaScript语言随着使用的人越来越多,ECMA语法规范:if/else* 为了让js语言更适应大型应用的开发.旨在消除一些怪异的行为 ### 包含内容(strict严格模式)- ...

  6. Node学习图文教程之express重写留言本案例

    写在前面 小伙伴们大家好,我是你们的pubdreamcc,接着前面的学习,这篇博文出至于我的GitHub仓库:Node学习教程资料,如果你觉得对你有帮助,欢迎star,你们的点赞是我持续更新的动力,谢 ...

  7. Node学习(二) --使用http和fs模块实现一个简单的服务器

    1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...

  8. node 学习笔记 - Modules 模块加载系统 (1)

    本文同步自我的个人博客:http://www.52cik.com/2015/12/11/learn-node-modules-path.html 用了这么久的 require,但却没有系统的学习过 n ...

  9. node 学习笔记 - path 处理

    本文同步自我的个人博客:http://www.52cik.com/2015/12/04/learn-node-path.html path 模块是 node 用于整理.转换.合并路径的神器,只要是路径 ...

随机推荐

  1. CTE在Oracle和Sqlserver中使用的差异

    CTE是一个很好用的工具,他可以帮助我们清晰代码结构,减少临时表使用,同时oracle和sqlserver都提供支持.但在oracle和sqlserver中使用CTE也存在一定区别. Oracle使用 ...

  2. U3D 脚本添加和获得对象

    有时候,一开始可能没有对象,而是由于某种触发,产生的一个对象,这里讲解下,如何通过脚本来创建一个对象: 这是通过脚本创建一个立方体: using UnityEngine; using System.C ...

  3. 学习java随笔第二篇:java开发工具——Eclipse

    java开发工具有很多这里我使用的是Eclipse. 首先我在官网上下载了Eclipse的软件包,下载地址:http://www.eclipse.org/downloads/,然后有在网上找了一个汉化 ...

  4. Android开发常见错误类型一览表

    这是我的第一个博客,我会一直添加我在Android开发中遇到的错误,用来记录我开发中踩过的那些坑 ------------------------分割线------------------------ ...

  5. angularjs kindEditor 中content获得不到值

    angularjs kindEditor 中content获得不到值 需要修改下angular-kindeditor.js angular-kindeditor.js if (KindEditor) ...

  6. post和get的区别?

    1. get是从服务器上获取数据,post是向服务器传送数据.2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过H ...

  7. QT QSettings 操作(导入导出、保存获取信息)*.ini文件详解

    1.QSettings基本使用 1.1.生成.ini文件,来点实用的代码吧. QString fileName;fileName = QCoreApplication::applicationDirP ...

  8. 【BZOJ3673】【可持久化并查集】可持久化并查集 by zky

    Description n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n ...

  9. Java学习随笔——RMI

    RMI(Remote Method Invocation)远程方法注入,用来实现远程方法调用,是实现分布式技术的一种方法.RMI提供了客户辅助对象和服务辅助对象,为客户辅助对象创建了和服务对象相同的方 ...

  10. grunt 合并压缩任务

    module.exports = function(grunt) { // LiveReload的默认端口号,你也可以改成你想要的端口号 var lrPort = 35729; // 使用connec ...