首先在这里分享一下我的喜悦。从昨天开始,我一直很快乐。我收到了我的第一份报价。第一桶金还是舒服的,虽然我还没有收到第一桶金哈哈,但是offer应该快了。今天的内容有点少,慢慢说吧1、首先我们看到包管理配置文件和下载慢的问题。多人合作,我们是不是应该经常通过git,github等分享我们的代码,那我应该会发现一个问题,一个项目文件有30M大小,而代码只有2M左右的内存,谁来给其余的部分?都是给第三方包的,也就是node_modules里面的内容,所以为了轻量级,我们在分享代码的时候一定不要带上node_modules文件夹,把她扔到.gitignore文件里忽略掉,那么我们就有了nosecond三方包的依赖是如何执行代码的?第三方包肯定还是需要的,但是没办法。我们有一个package.json文件,其中存储了所有已安装的第三方包的内容。1.1快速创建packagejson,只需要在项目文件中执行nodeinit-y即可。请注意,您只能在英文目录中创建此文件。这里的英文是指当前目录是英文的,也就是上层是中文无所谓,然后我们运行npmi安装第三方包的时候,这个json文件就会得到信息,所以我们需要在安装前创建json文件。1.2dependenciesnode这个是这个json中的节点名,记录了npm安装了哪些包1.3既然我们没有包,知道所有需要的包名,那么如何一次安装所有的包呢?npminstall或者i可以不加包名安装所有包1.4卸载包npmuninstall包名不简写1.5devDependencies节点这个节点也是保存安装包。一些包允许我们开发将在线使用的包。我们一般把前者放在devDependencies节点,后者放在dependencies节点。当然他也有具体的安装方法npmi包名-D2。然后我们看到一些包下载会慢的原因,因为我们的npm服务器是国外的,通过海底光缆传输的数据当然慢,所以这个时候我们需要更换npm镜像服务器。可以通过npmconfigsetregistry查看当前的npmserver,然后通过npmconfigsetregistry='淘宝或者腾讯的镜像地址'进行设置。这样做的原因是因为我们有一种简单的方法可以通过npm安装一个nrm全局工具。需要在包名后面加一个-g然后nrmls查看当前可以设置的服务器地址,然后用nrmuse添加这个服务器名即可使用。3.包分类我们将包分为两类,一类是项目包,也就是安装在node_modules中的包,还有放在devDependencies节点中的开发依赖包和可以用于开发和上线的核心依赖包,二是全局包,放在c盘目录下,安装时通过-g参数安装。注意:全局安装只需要工具包,因为它们提供了一些终端命令3.1i5ting_toc可以将md文件转换成html的小工具。请注意,它是一个工具。这个其实很方便,我也一直在用。降价垫2。如何使用它?i5ting_toc-fmd文件路径-o表示浏览器打开3.2一个规范包的结构必须包含三个东西①每个包必须是一个单独的目录②包的顶层目录必须包含package.json③packag.json必须包含name,version,main三个属性接下来我们自己做一个封装:要实现的功能是:日期可以格式化,html中的字符可以转义为特殊字符并转回去。首先初始化包的基本结构,创建包文件夹,里面放三个文件,index.js、package.json、README.md分别代表包入口文件、包配置文件、包描述文档。接下来初始化package.json的内容,{name:到时候会在npm网站上搜索我们包的名称,所以使用前先去网站看看有没有重名,version:版本号,main:入口文件,可见我们的import是针对这个文件的。如果说外界导入的时候只导入了一个目录,不是js文件,那么node会在这个目录下找到package.json中的main然后进入入口文件,说明:详细介绍,关键字:keywords是一个数组,license:开源协议}接下来就是在index.js中定义三个函数,这里有一个很重要的概念,Modularization,是否需要一个函数格式化时间,另一个函数补零?那么这两个函数就可以放在单独的js文件中,我们的html转特殊字符和特殊字符返回html也需要单独的js文件。完成后需要把函数放到各自文件中的exports中,然后index.js导入两个js文件。你此时得到的是一个具有这些功能的对象。我们需要通过es6语法中的扩展算法进行解构,只有逗号分隔的函数。这里有点乱,看代码就明白了。//1.格式化时间functiondateFormat(time){constdate=newDate(time)lety=date.getFullYear()letm=getZero(date.getMonth()+1)letd=getZero(date.getDate())让h=getZero(date.getHours())让mm=getZero(date.getMinutes())让s=getZero(date.getSeconds())返回`${y}-${m}-${d}${h}:${mm}:${s}`}//2.零填充函数functiongetZero(n){returnn<10?'0'+n:n}//6.1共享成员模块.exports={dateFormat}//4.html转义函数functiongetHtmlCode(htmlStr){returnhtmlStr.replace(/<|>|"|&/g,match=>{switch(match){case'<':return'<'case'>':return'>'case'"':return'"'case'&':return'&'}})}//5.恢复html函数getHtml(htmlStr){returnhtmlStr.replace(/<|>|"|&/g,match=>{switch(match){case'<':return'<'case'>':return'>'case'"':return'"'case'&':return'&'}})}//6.2共享成员module.exports={getHtmlCode,getHtml}index.js//6.3importconstdate=require('./src/dateFormat')conststrEscape=require('./src/strEscape')//3.共享成员模块。exports={...date,...strEscape}test.jsconstbag=require('./index')console.log(bag.dateFormat(newDate()));console.log(bag.getHtmlCode('
