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

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

改变网页网站开发和构建的方式, 除了用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的帮助信息...

关于grunt, 参考: http://www.html-js.com/article/1647

使用 package.json来安装npm的依赖包: 主要的几个"字段"是3个: 包的name, version, 和 devDependencies, 其他还可以有: author, private,

{
"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/

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是美国纳斯达克证券的官网.

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

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

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

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

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: ): https://segmentfault.com/a/1190000000473869


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哲学的又一体现.

npm的安装和使用?的更多相关文章

  1. Nodejs 及 NPM 的安装

    Nodejs 及 NPM 的安装,有两种方式: 方式1.Nodejs 及 NPM  一起安装 https://nodejs.org/en/download/  下载  Windows Installe ...

  2. Windows环境下的NodeJS+NPM+Bower安装配置步骤

    Windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮 ...

  3. windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置

    http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...

  4. [转] npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  5. npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  6. npm install安装时忘记--save解决方法

    title: npm install安装时忘记--save解决方法 date: 2017-05-07 20:17:54 tags: npm categories: --- 网上还有一个解决方案就是: ...

  7. nodejs和npm的安装

    下载nodejs的压缩包 网址:https://nodejs.org/en/ 下载以tar.xz结尾的包例如:node-v8.9.4-linux-x64.tar.xz 上传包到制定的目录 可以用lrz ...

  8. npm离线安装插件

    公司内部网络与外部网络隔离,导致npm无法通过npm install安装,只能通过离线安装. 要求: 两台机器(内网一台,外网一台) 两台机器上都已安装好的node和npm 以内网机器安装ftpsyn ...

  9. ubuntu下nodejs和npm的安装及升级

    ubuntu 下 nodejs 和 npm 的安装及升级 参考:https://segmentfault.com/a/1190000007542620 一:ubuntu下安装 node 和 npm命令 ...

  10. npm下载安装文件太慢..修改这个就好了..治好多年的便秘..真香预警

    修改 npm 的安装目录下的 npmrc文件 增加一条 registry=http://registry.cnpmjs.org 将原来的https改成下面的http $ npm config set ...

随机推荐

  1. gitlab覆盖率

    https://danny50610.blogspot.com/2017/09/gitlab-ci-phpunit-coverage.html

  2. 运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签

    1.运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签,结束调试时窗口又关闭了,特别麻烦. 在用swagger调试接口时,好不容易输入了测试数据,然而窗口关闭了,再次调试又得重新输入. 解决 ...

  3. C# Activator和new的区别

    1.你需要动态的创建一个实例模型的时候,就用Activator.CreateInstance(Type type);如果是明确的知道要创建哪个实例的模型,就可以用 new Class1()了. T t ...

  4. 【Hadoop学习之五】win7+Eclipse+hadoop3搭建本机开发环境

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 拓扑: 知识准备: 1.eclip ...

  5. flask实战-个人博客-使用蓝本模块化程序

    使用蓝本模块化程序 实例化flask提供的blueprint类就创建一个蓝本实例.像程序实例一样,我们可以为蓝本实例注册路由.错误处理函数.上下文处理函数,请求处理函数,甚至是单独的静态文件文件夹和模 ...

  6. 你知道CSS实现水平垂直居中的第10种方式吗?

    你知道CSS实现水平垂直居中的第10种方式吗? 仅居中元素定宽高适用: absolute + 负 margin absolute + margin auto absolute + calc 居中元素不 ...

  7. H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Romantic_Energy/article/details/50508332本文需要读者对H.26 ...

  8. [转载]图解程序员必须掌握的Java常用8大排序算法

    这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,分享给大家一起学习. 分类1)插入排序(直接插入排序.希尔排 ...

  9. Icarscan VCI is definitely the update variation of Start iDiag

    Start iCarScan is alternative of Super X431 iDiag, it’ll make your Android smartphone or tablet righ ...

  10. MXNet官方文档中文版教程(3):神经网络图(Symbol)

    https://blog.csdn.net/qq_36165459/article/details/78394259 文档英文原版参见Symbol - Neural network graphs an ...