npm的安装和使用?

参考: http://www.cnblogs.com/chyingp/p/npm.htmljavascript

在css中使用变量, 采用less或sass来编译cssphp

改变网页网站开发和构建的方式, 除了用emmet(zen-coding) 来改变书写代码的方式外, 主要就是用 不少框架, 架构, 来构建css和js的 方式

使用 grunt.js gruntcli: grunt: 咕噜, 发出咕噜咕噜的声音...
基于nodejs, node.js的一种自动化工具.
npm则是nodejs 的 package manager包管理器, 包括: npm install/uninstall/ls, info/update/search 等命令和管理内容.
npm help查看npm的帮助信息...css

关于grunt, 参考: http://www.html-js.com/article/1647
使用 package.json来安装npm的依赖包: 主要的几个"字段"是3个: 包的name, version, 和 devDependencies, 其余还能够有: author, private,html

{
    "name": "...",
    "ersion":"....",
    "author": "...",
    "private": true,
    "devDependencies ????": {
            "depend_name" : "depend_pack_version"
        }

}

ember: 灰烬 , 余辉, ember.js
angular: adj. 有棱角的, 瘦骨嶙峋的, 有尖角度 , 有棱角的, 它是angle(角度, 角) 的形容词.
AngularJS是前端数据库 框架js.
而node.js是后端 服务器端js框架, 它有不少的 扩展, 组件, 有不少基于node.js的开发的plugin, 如同jquery有不少基于jquery开发的插件同样. 可是 node.js能够把 这些基于node.js的不少 的插件, 有机的结合组织起来, 造成一个开发web程序的有机的工具, 这个就是npm, 这个npm能够很方便的 下载/更新/管理这些nodejs的插件.前端

node.js的优劣: 参考:http://kb.cnblogs.com/page/200929/java

Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。当前的服务器程序有什么问题?咱们来作个数学题。

在 Java™ 和 PHP 这类语言中,**每一个链接都会生成一个新线程,每一个新线程可能须要 2 MB 的配套内存。**

在一个拥有 8 GB RAM 的系统上,理论上最大的并发链接数量是 4,000 个用户。随着您的客户群的增加,若是但愿您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。固然,这会增长服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每一个请求使用不一样的服务器,所以,任何共享资源都必须在全部服务器之间共享。鉴于上述全部缘由,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器可以处理的并发链接的最大数量。
瓶颈在于服务器可以处理的并发链接的最大数量。
Node.js解决这个问题的方法是:更改链接到服务器的方式。每一个链接发射一个在Node.js引擎的进程中运行的事件,而不是为每一个链接生成一个新的OS线程(并为其分配一些配套内存)。
Node.js不会死锁,由于它根本不容许使用锁,它不会直接阻塞 I/O 调用。Node.js还宣称,运行它的服务器能支持数万个并发链接。

nodejs主要适合: cpu使用率较低,可是io使用率较高的web程序应用....

Node.js轻量高效,能够认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。

### Node很是适合以下状况:在响应客户端以前,您预计可能有很高的流量, 但所需的服务器端逻辑和处理 (cpu负载) 不必定不少。

node.js 是基于 v8 javascript的 google的js框架, 使用modules化设计. 总之, nodejs是一种 相似于php和java的服务器端动态脚本. 采用模块化设计的...

npm是跟随着node.js安装的时候, 安装的, 即在安装node的时候, 就已经把npm安装好了, 如同php安装的时候, 就把pear给安装了. (pear就至关于php的插件的包管理器). 它的位置在: c:\program files\nodejs\node_modules\npm\中, 可执行 "批处理" 命令是: bin/npm.cmd

npm自己的官网地址是: www.npmjs.com 注意, 不是 npm.com, npm.com是美国纳斯达克证券的官网.node

export: ['eksp2:t] ex- 的发音是eks, 跟exercise同样的发音.jquery

学习任何一门语言, 确定要花费大量的时间精力, 还有各类坑, 各类第三方的bug, 各类不靠谱, 因此有的东西, 适合"尝试"一下, 了解一下仍是能够的, 真的是用在项目中, 则要仔细权衡和思考了.linux

nodejs的第三方库仍是很丰富的,不过稳定性和强壮性于JAVA比起来就弱了不少,
开发过程当中各类蛋疼,第三方库的各类bug,
各类坑让你去踩,
若是遇到线上产品紧张的时候,你就悲剧了……
好处是,踩坑的过程当中,你会学到不少。

前端和后端都会/精通的工程师, 叫 "全端"工程师. PayPal从java迁移到node.js , 因为java的愈来愈封闭/复杂/收费jvm, 使得"去java化", 刚开始使用node.js作了一些demo用的原型程序... 一方面,node调用的都是c++编译后的模块,其次V8的引擎执行的速度也不是盖的。我的感受nodejs开发web应用有纯自然的优点,不过开发大型项目的话,缺点仍是蛮多的。c++

underline和underscore的区别:
underline是比较长的那种线, 而underscore是比较短的那种下划线 如: mbstring_module.dll这种里面的下划线就是underscore, 而像word中, 给一句话加上下划线那种的就叫underline.
另外: underscore还有"底线, 作事的底线"的意思, 而underline, 还有下期节目预告.

npm支持命令的简写, 如npm install 能够简写为npm i underscore.js


理解node.js文件的执行方式: 当在命令行, 执行 node foo.js脚本的时候

  1. js脚本中的 console.log 会立刻执行.
  2. var server = http.createServer(...); //是建立一个变量; 而 server.listen(9000); 是侦听9000端口, 这个语句的命令是 : node.js "进程"/服务器, 会监听这个端口, 当使用curl, firefox等request请求这个端口时, 就会 执行 createServer中的回调函数, 发送request, response等...

  3. 因此, 若是有 listen的话, cmd命令行是一直在那里等待, 运行的, 并无退出. 直到你执行ctrl-c的时候, 才退出, 这就是 listen的做用!

下载的npm包....

默认的时候, 是放在当前目录下的 node_modules, 要想在任意目录均可以使用你npm下载安装的包, 则 在安装的时候, 就要使用: npm i your_package_name -g
注意, 缩写也不是任意的, 要看npm 帮助中, 确实有的 "单字母"命令, 你才能使用.

上传到git repository的时候, 不要上传你本地的 npm包, 而只须要上传你的 package.json 文件就行了. 而后, 其余使用你的项目的用户, 只须要在他的本地机器上, 执行 npm a 命令就行了.


npm popular 是一个npm最流行的包

npm i npm_package_name --save(--save是自动将npm的包加入到 package.json中),
--dev表示只是在开发阶段 , 不会上传到git 仓库中.

若是你是要开发web app, 要使用node.js的扩展包, 那么 就直接在当前目录下, 使用npm 去下载...管理这些包. 而后在你的项目中去
引入你须要的前端 js包就能够了, 好比:<script src="./node_modules/jquery/dist/jquery.js">, 一般目录结构是: ./node_modules/package_name/..../*.js

在写a超连接的地址时, 能够写绝对路径: 即从 "/" 开始写起:
同时在用ff调试的时候, 若是是 "宽屏/ 或者显示的内容不多, 宽度很小的 时候", 能够将f12的调试窗口放到页面的 "水平右边, 靠右"

命令:npm init -y 能够生成package.json文件吗? 是的, 它会在当前目录下生成 package.json 文件!


几个容易混淆的英文?

  • solution: 两个意思, 解决方案, 解决; 另外一个是溶液, 溶解的意思.
  • resolution: 两个意思: 分辨率; 决议, 决定; 决心!
  • revolution: r-evolution 跟evolution比较, 多一个r-字母. rev-olution <-> res-olution比较, 不一样的是一个v, 表示革命的,
  • evolution: n. 进化, 演变, 发展, evolutionary: 进化的, 逐渐的, at some point in their evolutionary history. the human evolutionary process.

npm install package-name --save
npm install package-name --save-dev
主要是不用手动去修改 package.json文件. 而会自动添加到json文件中. --save是产品依赖包, 添加到 dependencies节中, 而--save-dev是开发依赖包, 添加到"devdependencies"节中.

nrm是管理npm的注册的:
先安装nrm: npm i nrm -g, 而后使用nrm进行管理, 包括: nrm ls, nrm current等命令:

在windows的 c:\users\administrator\目录, 就至关于在linux中的 ~, 用户家目录
npm的注册配置文件, 就是在 ~/administrator/.npmrc这个家目录下的 .npmrc. 里面的内容是: registry=http://r.cnpmjs.org/

nrm ls 列出当前可使用的注册镜像,
nrm use 则是指定使用的nodejs镜像地址. 此时.npmrc的内容也会相应的改变 注意是nrm, 不是npm: nrm: npm registry manager.


nrm是npm镜像源的管理器, 母的是:

cnpmjs.org和最近推出的淘宝 npm 两个 NPM 镜像。除此以外,还有一些国外的 NPM 镜像。不一样地区访问不一样的镜像速度可能有差别,而后各个镜像各自均可能有少数包暂时没有同步,所以,有时候须要切换 NPM 镜像。相比每次切换时都手动指定相应参数,使用nrm 要方便的多。

添加镜像源, 主要是企业内部本身的私有源, 能够根据cnpmjs来本身定制: nrm add ... refer to(see also, for your information: ): http://www.javashuo.com/article/p-cyixmyaf-t.html


firefox如何设置多个主页?
主页: alt+home键
有多种方法: 一是, 直接在主页设置框中, 输入多个url地址, 中间用 管道 | 隔开, 二是使用书签文件夹, 这样书签文件夹中的多个书签会依次打开. 三是, 事先打开多个页面, 而后单击"使用当前打开的网页".
可是, 更有意义的是, 在"firefox打开时" 选择option: 打开上次打开的窗口和标签, 这个能够快速的恢复 "上次工做没有完成, 中断了的页面~~" 感受很是好用!! 这样就不用担忧中途须要中断 关机时 再从新去找哪些是打开的标签 了.

nodejs包括两种模块, 一种是原生模块, 一种是文件模块...
require成功后, 返回的是一个 原生的模块对象, 就可使用对象的api进行操做了.


npm的下载, 就像yum的同样 , 在他的站点中, 就有各类 nodejs的插件/模块, 只要你使用 npm install module-name -g npm就会自动的从他的站点上下载下来.

使用npm的站点是: www.npmjs.com, 注意是 npmjs不是npm, npm是纳斯达克的站点.
npm install安装的是 当前目录(即 当前命令提示符所在的位置目录).

使用npmjs, nodejs模块的方法是:

  1. 下载
  2. require("module-name"), 会返回这个模块对象, 如 var = require('http'); 而后就可使用这个对象的 类 方法/成员变量等了.
  3. 若是require不写 "./module-name.js", 则默认的是从当前的node-modules目录中去加载, 入口文件是 packages.json

package.json文件? 是用来管理依赖包的: 由于每一个官方的依赖包, 都是在npmjs上下载的, 每一个人, 每台电脑均可以去下载, 所以, 当咱们共享/拷贝项目(代码)的时候, 除了那些html, js文件外, 从npmjs站点上下载下来的实体包, 实际上是不用传递的. 由于这些包一块儿打包/传递, 实际上是没有意义的, 由于他们自己能够本身去下载的. 所以, 你只须要告诉别人, 个人项目中, 须要哪些nodejs模块, 须要哪些依赖包就能够了, 而后 ,你把项目拷贝给别人后, 他本身利用 npm install命令就行了, 就能够根据package.json所须要的依赖包, 去本身下载了. 这就是package.json的意义!

  • 建立json文件, 的命令是; npm init (初始化). walk you through creating a package.json file. 其中的entry point就是json文件中的main: index.js入口文件.
  • 安装json所描述指定的依赖包: npm install .

"dependencies": {
    "express": "^4.15.2"
  },

其中的, 4.15.2前面的脱字符, 表示这个版本数字是固定的, 脱字符只管跟他直接相邻的那个数字, 若是要固定全部的数字, 则用: ^4.^15.^2

npm的依赖包, 多是 递归的 依赖. 即一个包a, 依赖另外一个包b, 而包b又可能 依赖其余一些包. 因此 npm, nodejs的哲学, 就是" 人人为我, 我为人人"的 最淋漓尽致的表现, 也是unix/linux哲学的又一体现.

相关文章
相关标签/搜索