zoukankan      html  css  js  c++  java
  • Node学习笔记(二)

    1.package.json详解Node.js 在调用某个包时,会首先检查包中 package.json 文件的 main 字段,将其作为包的接口模块,如果 package.json 或 main 字段不存在,会尝试寻找 index.js 或 index.node 作为包的接口。

    package.json 是 CommonJS 规定的用来描述包的文件,完全符合规范的 package.json 文件应该含有以下字段。

    name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格。

    description:包的简要说明。

    version:符合语义化版本识别①规范的版本字符串。

    keywords:关键字数组,通常用于搜索。

    maintainers:维护者数组,每个元素要包含 name、email(可选)、web(可选)字段。

    contributors:贡献者数组,格式与maintainers相同。包的作者应该是贡献者数组的第一个元素。

    bugs:提交bug的地址,可以是网址或者电子邮件地址。

    licenses:许可证数组,每个元素要包含 type (许可证的名称)和 url (链接到许可证文本的地址)字段。

    repositories:仓库托管地址数组,每个元素要包含 type (仓库的类型,如 git )、url (仓库的地址)和 path (相对于仓库的路径,可选)字段。

    dependencies:包的依赖,一个关联数组,由包名称和版本号组成。

    实例:

    {
    "name": "mypackage",
    "description": "Sample package for CommonJS. This package demonstrates the required
    elements of a CommonJS package.",
    "version": "0.7.0",
    "keywords": [
    "package",
    "example"

    ],
    "maintainers": [
    {
    "name": "Bill Smith",
    "email": "bills@example.com",
    }
    ],
    "contributors": [
    {
    "name": "BYVoid",
    "web": "http://www.byvoid.com/"
    }
    ],

    "bugs": {
    "mail": "dev@example.com",
    "web": "http://www.example.com/bugs"
    },
    "licenses": [
    {
    "type": "GPLv2",
    "url": "http://www.example.org/licenses/gpl.html"
    }
    ],
    "repositories": [
    {

    "type": "git",
    "url": "http://github.com/BYVoid/mypackage.git"
    }
    ],

    "dependencies": {
    "webkit": "1.2",
    "ssl": {
    "gnutls": ["1.0", "2.0"],
    "openssl": "0.9.8"
    }
    }
    }

    2.本地模式与全局模式相比的特点

    模 式                    可通过 require 使用                     注册PATH
    本地模式                         是                                           否
    全局模式                         否                                           是

    3. 如何在npm上发布自己的包在发布之前,首先需要让我们的包符合 npm 的规范,npm 有一套以 CommonJS 为基础包规范,但与 CommonJS 并不完全一致,其主要差别在于必填字段的不同。通过使用 npm init 可以根据交互式问答产生一个符合标准的 package.json,例如创建一个名为 byvoidmodule 的目录,然后在这个目录中运行npm init:

    这样就在 byvoidmodule 目录中生成一个符合 npm 规范的 package.json 文件。创建一个index.js 作为包的接口,一个简单的包就制作完成了。在发布前,我们还需要获得一个账号用于今后维护自己的包,使用 npm adduser 根据提示输入用户名、密码、邮箱,等待账号创建完成。完成后可以使用 npm whoami 测验是否已经取得了账号。

    接下来,在 package.json 所在目录下运行 npm publish,稍等片刻就可以完成发布了。打开浏览器,访问 http://search.npmjs.org/ 就可以找到自己刚刚发布的包了。现在我们可以在

    世界的任意一台计算机上使用 npm install byvoidmodule 命令来安装它。如果你的包将来有更新,只需要在 package.json 文件中修改 version 字段,然后重新使用 npm publish 命令就行了。如果你对已发布的包不满意(比如我们发布的这个毫无意义的包),可以使用 npm unpublish 命令来取消发布。

    4.调试

    一.Node.js 支持命令行下的单步调试。

    二.使用 Eclipse 调试 Node.js 

    三.使用 node-inspector 调试 Node.js 

    在命令行下执行 node debug xx.js,将会启动调试工具:

                            命 令                                                          功 能

                             run                                         执行脚本,在第一行暂停

                          restart                                                 重新执行脚本
                          cont, c                                   继续执行,直到遇到下一个断点
                          next, n                                                        单步执行
                          step, s                                               单步执行并进入函数
                           out, o                                                    从函数中步出
                 setBreakpoint(), sb()                                   在当前行设置断点
              setBreakpoint(‘f()’), sb(...)                         在函数f的第一行设置断点

          setBreakpoint(‘script.js’, 20), sb(...)              在 script.js 的第20行设置断点
                clearBreakpoint, cb(...)                                  清除所有断点
                       backtrace, bt                                         显示当前的调用栈
                          list(5)                                         显示当前执行到的前后5行代码
                     watch(expr)                                       把表达式 expr 加入监视列表
                  unwatch(expr)                                     把表达式 expr 从监视列表移除

                    watchers                                        显示监视列表中所有的表达式和值

                       repl                                                在当前上下文打开即时求值环境
                        kill                                                       终止当前执行的脚本
                    scripts                                                 显示当前已加载的所有脚本
                    version                                                      显示 V8 的版本

    下面是一个简单的例子:
    $ node debug debug.js
    < debugger listening on port 5858
    connecting... ok
    break in /home/byvoid/debug.js:1
    1 var a = 1;
    2 var b = 'world';
    3 var c = function (x) {
    debug> n

    break in /home/byvoid/debug.js:2
    1 var a = 1;
    2 var b = 'world';
    3 var c = function (x) {
    4 console.log('hello ' + x + a);
    debug> sb('debug.js', 4)
    1 var a = 1;
    2 var b = 'world';
    3 var c = function (x) {

    * 4 console.log('hello ' + x + a);
    5 };
    6 c(b);
    7 });
    debug> c
    break in /home/byvoid/debug.js:4
    2 var b = 'world';
    3 var c = function (x) {
    * 4 console.log('hello ' + x + a);
    5 };
    6 c(b);

    debug> repl
    Press Ctrl + C to leave debug repl
    > x
    'world'
    > a + 1
    2
    debug> c
    < hello world1
    program terminated

  • 相关阅读:
    超棒的jQuery矢量地图生成插件 JQVAMP
    签名一年过期 项目导入出现 红叉叉
    invalid commandline parameter: Files\Android\androidsdk\tools/emulatorarm.exe 错误
    线性布局 相对布局 参数
    触摸事件 按下 移动 弹起
    Activity service 通信
    android view的setVisibility方法值的意思
    TextView 支持 html 图片显示
    布局动态添加 相对布局
    存储数据 SharedPreferences
  • 原文地址:https://www.cnblogs.com/lzcblog/p/10204486.html
Copyright © 2011-2022 走看看