node06---npm、silly-datetime、路径问题

我们刚才学习了,模块就是一些功能的封装,所以一些成熟的、经常使用的功能,都有人封装成为了模块。并且放到了社区中,供人免费下载。
这个伟大的社区,叫做npm。 也是一个工具名字  node package management
https://www.npmjs.com/

去社区搜索需求,然后点进去,看api。
如果要配置一个模块,那么直接在cmd使用
1npm install 模块名字
就可以安装。 模块名字全球唯一。安装的文件在一个node_modules文件夹中,
安装的时候,要注意,命令提示符的所在位置。

08.js

var sd = require("silly-datetime");

//需要使用一个日期时间,格式为 20150920110632
var ttt = sd.format(new Date(), ‘YYYYMMDDHHmm‘);

package.json

/* 跟08.js 在一个目录。

我们可以用package.json来管理依赖。
在cmd中,08.js文件所在文件夹,使用npm  init可以初始化一个package.json文件,用回答问题的方式生成一个新的package.json文件。
使用 08.js文件所在文件夹 : npm  install
将能根据package.json安装08.js所有的依赖。
npm也有文档,这是package.json的介绍:
https://docs.npmjs.com/files/package.json
*/
{
  "name": "day2",
  "version": "1.0.0",
  "description": "ziji zuo de xia waner de",
  "main": "08.js",
  "directories": {
    "test": "test"
  },
  "dependencies": {
    "silly-datetime": "^0.1.0"  /*^表示固定只使用0.x.x的版本,不使用1.x.x,2.x.x*/
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "good",
    "greet"
  ],
  "author": "kaola",
  "license": "ISC"
}
require()别的js文件的时候,将执行那个js文件。
注意:
require()中的路径,是从当前这个js文件出发,根据相对路径,找到别人。而fs是从命令提示符找到别人。
所以,桌面上有一个a.js, test文件夹中有b.js、c.js、1.txt
a要引用b:
var b = require(“./test/b.js”);
b要引用c:
var b = require(“./c.js”);
但是,fs等其他的模块用到路径的时候,都是相对于cmd命令光标所在位置。
所以,在b.js中想读1.txt文件,推荐用绝对路径:
fs.readFile(__dirname + "/1.txt",function(err,data){
   console.log(__dirname);//当前文件的绝对路径,E:\360data\重要数据\桌面\test,跨平台兼容,linux也可以兼容
    if(err) { throw err; }
    console.log(data.toString());
});

silly-datetime源码

(function(root, factory) {
  ‘use strict‘;
  /* istanbul ignore else  */
  if (typeof exports === ‘object‘) {
    // CommonJS
    module.exports = factory();
  } else if (typeof define === ‘function‘ && define.amd) {
    // AMD
    define(function() {
      return factory();
    });
  } else if (typeof define === ‘function‘ && define.cmd) {
    // CMD
    define(function(require, exports, module) {
      module.exports = factory();
    });
  } else {
    // Global Variables
    root.ResizeImage = factory();
  }
})(this, function () {
  ‘use strict‘;

  var out = {};

  /**
   * 将输入的任意对象转换成 Date,如果装换失败将返回当前时间
   * @param  {any} datetime 需要被格式化的时间
   * @return {Date}         转换好的 Date
   */
  function getDateObject(datetime) {
    var t = datetime instanceof Date ? datetime : new Date(datetime);
    if (!t.getDate()) {
      t = new Date();
    }
    return t;
  }

  /**
   * 格式化时间
   * @param  {Date}   datetime 需要被格式化的时间
   * @param  {string} format   格式化字符串,默认为 ‘YYYY-MM-DD HH:mm:ss‘
   * @return {string}          格式化后的时间字符串
   */
  out.format = function (datetime, format) {
    var t = getDateObject(datetime);
    var hours, o, i = 0;
    format = format || ‘YYYY-MM-DD HH:mm:ss‘;
    hours = t.getHours();
    o = [
      [‘M+‘, t.getMonth() + 1],
      [‘D+‘, t.getDate()],
      // H 24小时制
      [‘H+‘, hours],
      // h 12小时制
      [‘h+‘, hours > 12 ? hours - 12 : hours],
      [‘m+‘, t.getMinutes()],
      [‘s+‘, t.getSeconds()],
    ];
    // 替换 Y
    if (/(Y+)/.test(format)) {
      format = format.replace(RegExp.$1, (t.getFullYear() + ‘‘).substr(4 - RegExp.$1.length));
    }
    // 替换 M, D, H, h, m, s
    for (; i < o.length; i++) {
      if (new RegExp(‘(‘ + o[i][0] + ‘)‘).test(format)) {
        format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[i][1] : (‘00‘ + o[i][1]).substr((‘‘ + o[i][1]).length));
      }
    }
    // 替换 a/A 为 am, pm
    return format.replace(/a/ig, hours > 11 ? ‘pm‘ : ‘am‘);
  };

  /**
   * CONST and VAR for .fromNow
   */
  // 预设语言:英语
  var LOCALE_EN = {
    future: ‘in %s‘,
    past: ‘%s ago‘,
    s: ‘a few seconds‘,
    mm: ‘%s minutes‘,
    hh: ‘%s hours‘,
    dd: ‘%s days‘,
    MM: ‘%s months‘,
    yy: ‘%s years‘
  };
  // 预设语言:简体中文
  var LOCALE_ZH_CN = {
    future: ‘%s内‘,
    past: ‘%s前‘,
    s: ‘几秒‘,
    mm: ‘%s分钟‘,
    hh: ‘%s小时‘,
    dd: ‘%s天‘,
    MM: ‘%s月‘,
    yy: ‘%s年‘
  };
  // 当前本地化语言对象
  var _curentLocale = {};

  /**
   * 修改本地化语言
   * @param  {string|Object}   string: 预设语言 `zh-cn` 或 `en`;Object: 自定义 locate 对象
   * @return {Object}          this
   */
  out.locate = function (arg) {
    var newLocale, prop;
    if (typeof arg === ‘string‘) {
      newLocale = arg === ‘zh-cn‘ ? LOCALE_ZH_CN : LOCALE_EN;
    } else {
      newLocale = arg;
    }
    for (prop in newLocale) {
      if (newLocale.hasOwnProperty(prop) && typeof newLocale[prop] === ‘string‘) {
        _curentLocale[prop] = newLocale[prop];
      }
    }
    return out;
  };
  // 初始化本地化语言为 en
  out.locate(‘‘);

  /**
   * CONST for .fromNow
   */
  // 各计算区间
  var DET_STD = [
    [ ‘yy‘, 31536e6 ], // 1000 * 60 * 60 * 24 * 365 一年月按 365 天算
    [ ‘MM‘, 2592e6 ],  // 1000 * 60 * 60 * 24 * 30 一个月按 30 天算
    [ ‘dd‘, 864e5 ],   // 1000 * 60 * 60 * 24
    [ ‘hh‘, 36e5 ],    // 1000 * 60 * 60
    [ ‘mm‘, 6e4 ],     // 1000 * 60
    [ ‘s‘,  0 ],       // 只要大于等于 0 都是秒
  ];

  /**
   * 计算给出时间和当前时间的时间距离
   * @param  {Date}   datetime 需要计算的时间
   * @return {string}          时间距离
   */
  out.fromNow = function (datetime) {
    var det = +new Date() - (+getDateObject(datetime));
    var format, str, i = 0, detDef, detDefVal;
    if (det < 0) {
      format = _curentLocale.future;
      det = -det;
    } else {
      format = _curentLocale.past;
    }
    for (; i < DET_STD.length; i++) {
      detDef = DET_STD[i];
      detDefVal = detDef[1];
      if (det >= detDefVal) {
        str = _curentLocale[detDef[0]].replace(‘%s‘, parseInt(det/detDefVal, 0) || 1);
        break;
      }
    }
    return format.replace(‘%s‘, str);
  };

  return out;
});
时间: 2024-12-25 07:05:10

node06---npm、silly-datetime、路径问题的相关文章

npm设置prefix 路径

Windows下的Nodejs npm路径是appdata,很不爽,想改回来,但是在cmd下执行以下命令也无效 npm config set cache "D:\nodejs\node_cache" npm config set prefix "D:\nodejs\node_global" 最后在nodejs的安装目录中找到node_modules\npm\.npmrc文件 修改如下即可: prefix = D:\nodejs\node_globalcache =

windows系统下npm 全局安装路径问题

安装了nodejs之后,npm的路径默认一直都是appData,表示很讨厌,于是尝试修改在安装目录(D盘空间很大啊) 安装目录:D:\program files\nodejs 一.在nodejs下新建两个文件夹(和node_modules同级): node_global和node_cache 二.cmd设置(引号必须要): npm config set cache "D:\nodejs\node_cache" npm config set prefix "D:\nodejs\

npm 常用命令详解

npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm install 安装模块 基础语法 npm install (with no args, in package dir) npm install [<@scope>/]<name>npm install [<@scope>/]<name>@<tag>

npm常用命令解析

npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm install 安装模块 基础语法 npm install (with no args, in package dir) npm install [<@scope>/]<name> npm install [<@scope>/]<name>@<tag>

CentOS 下安装 Node npm pm2

1.node安装 参考:http://blog.csdn.net/haidaochen/article/details/7257655 下载,你需要在https://nodejs.org/en/download/下载最新的Nodejs版本,一般选择编译好的二进制包 配置NODE_HOME,进入profile编辑环境变量 vim /etc/profile 设置nodejs环境变量,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTR

如何使用npm发布Node.JS程序包

如何使用npm发布Node.JS程序包 Heero.Luo发表于3年前,已被查看5065次 npm是Node.JS的程序包管理器.进行Node.JS开发时,经常使用它安装/卸载程序包.实际上,发布程序包的工作也是由它来完成的. 配置package.json 要打包程序,首先要配好各项设置,这些设置都由程序包根目录下的package.json指定.package.json的内容必须是严格的JSON格式,也就是说: 字符串要用双引号括起来,而不能用单引号: 属性名一定要加双引号: 最后一个属性后千万

VSCode, NPM中使用代理服务器

VSCode中使用代理服务器,在vscode窗口打开-File->Preferences->Settings 修改下面的参数 "http.proxy": "http://<用户名>:<密码>@<vpn服务器>:<服务器端口>/", NPM中使用代理服务器: 默认npm的配置文件在C:\Users\<当前用户>\.npmrc 你也可以使用npm config ls获得npm的userconfig路

关于npm(转)

npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm update 更新模块 npm outdated 检查模块是否已经过时 npm ls 查看安装的模块 npm init 在项目中引导创建一个package.json文件 npm help 查看某条命令的详细帮助 npm root 查看包的安装路径 npm config 管理npm的配置路径 npm cache 管理模块的缓存 npm start 启动模块 npm stop 停止模块 npm restar

我的npm笔记

本文记录一些npm的使用技巧,主要包括自己常用的命令,做个备忘. NPM 是什么? NPM是NodeJS的包管理工具,现在已经进一步发展,致力于为很多其他平台提供包管理工具,其核心思想就是让包的安装更简洁,并自动处理依赖的问题. 它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜索.发布等. npm官网 npm官方文档 如果上面的服务挂了(原因你懂得),可以访问下面的链接备用: 淘宝 NPM 镜像 百度(内部)NPM 配置代理 npm的服务有时会挂掉,就算不挂掉,速度也是龟速的,这

升级nodeJS中的npm版本

用过gulp的朋友应该知道,有些gulp外挂对nodeJS以及npm的版本号是有要求的,如下图: 打开命令行窗口,执行 npm install -g npm 同时删除nodeJS安装目录下的这三个文件: 因为你在系统环境变量中已经有:D:\nodejs\;  如果没有删除,该版本会覆盖全局安装的npm,看一下如果没有删除这三个文件的结果: 删除那三个文件后再试一下: (前提是你的npm全局安装路径的已经在系统环境变量中配置,这里我的全局安装路径可以看上一篇博文,再环境变量path中添加:D:\n