require

手写一个自己的 cli 并发布到 npm 上

偶尔善良 提交于 2019-12-28 23:26:30
手写一个自己的 cli 并发布到 npm 上 简介:大家平时肯定用过 vue-cli 或者 create-react-app,只需要敲简单的命令行,就可以生成一个完成的项目,非常好用。由于本人所在公司接的项目较多,每次新建新项目都是拷贝以前的项目代码,好麻烦,而且得删除掉好多没用的代码,心累。于是就想着模仿 vue-cli 写一个简单的创建项目的 cli,这样不是就省心省力了嘛。于是说干就干,自己写了一个 cli: va-cli ,大家也可以使用,只要执行以下命令就好,如下 npm install va-cli -g va-cli init project-name github 源码地址 下面是实现步骤 1.项目依赖:(先安装,步骤略) "dependencies" : { "chalk" : "^3.0.0" , "commander" : "^4.0.1" , "download-git-repo" : "^3.0.2" , "inquirer" : "^7.0.1" , "ora" : "^4.0.3" } , "devDependencies" : { "eslint" : "^6.8.0" , "eslint-config-standard" : "^14.1.0" , "eslint-plugin-import" : "^2.19.1" , "eslint

NodeJs : TypeError: require(…) is not a function

谁说我不能喝 提交于 2019-12-28 02:39:09
问题 I am trying to require a file and afterwards pass it to a var. I am following this tutorial to create a authentication system. After writing the server.js file and trying to compile I got a bson error therefore I changed the line that required the release version of it in mongoose. Here are my code and error : server.js require('./app/routes')(app, passport); Error require('./app/routes')(app, passport); ^ TypeError: require(...) is not a function at Object.<anonymous> (d:\Node JS learning

node.js基础

狂风中的少年 提交于 2019-12-27 20:27:44
node js基础入门 1.什么是nodejs node.js是基于Chrome v8引擎的javascript 运行时(运行环境) node.js的规范:commonjs规范 2.如何进入node.js(两种方式) 1.js文件方式:通过 js文件的方式(浏览器f12) 2.交互式:(node+文件名) 3.退出:exit 3.什么是模块化? 1.一个js文件就是一个模块 2.每个模块都是一个独立的作用域,在这个文件中定义的变量、函数、对象都是私有的,对其他文件不可见。 作用:1.能够复用 2.防止命名冲突 4.如何导入和导出 导入:require 导出:module.exports 5.模块化的分类(3种) 内置模块:由node本身提供,不需要单独安装(npm),直接require(引入)即可 自定义模块:由我们自己创建,比如tools.js/user.js 第三方模块:由社区或者个人提供,需要npm安装 【5-1】内置模块: 核心模块(先引入在使用): fs:文件操作模块, http:网络操作模块 url:解析地址模块 path:路径操作模块 querystring:解析参数字符串的模块 【5-2】自定义模块: 由开发人员创建的模块(js文件) 1.基本使用: 【1-1】创建模块 【1-2】引入模块 注意:自定义模块的路径必须以./获取../开头 2.加载模块 【2-1

How to make node.js require absolute? (instead of relative)

依然范特西╮ 提交于 2019-12-27 10:34:42
问题 I would like to require my files always by the root of my project and not relative to the current module. For example if you look at https://github.com/visionmedia/express/blob/2820f2227de0229c5d7f28009aa432f9f3a7b5f9/examples/downloads/app.js line 6 you will see express = require('../../') That's really bad IMO. Imagine I would like to put all my examples closer to the root only by one level. That would be impossible, because I would have to update more than 30 examples and many times within

import和require的区别

时间秒杀一切 提交于 2019-12-27 10:20:16
node编程中最重要的思想就是模块化, import 和 require 都是被模块化所使用。 遵循规范 require 是 AMD规范引入方式 import 是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法 调用时间 require是运行时调用,所以require理论上可以运用在代码的任何地方 import是编译时调用,所以必须放在文件开头 本质 require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量 import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require require / exports : 遵循 CommonJS/AMD,只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。 用法只有以下三种简单的写法: const fs = require('fs') exports.fs = fs module.exports = fs import / export: 遵循 ES6 规范,支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。 写法就比较多种多样: import fs from 'fs' import {default as fs}

模块导入导出

蓝咒 提交于 2019-12-27 05:41:30
bundle 是入口 js,也就是你的 html 会直接引用的 js 文件。 chunk 是webpack依据依赖打包的懒加载js文件,我们不会直接引用,一般都是 webpack 自动加载。 导出 ES6 export // 具名导出 export var Count = 5; export function Multiply(a, b) { return a * b; } // 默认导出 export default { // Some data... }; // 直接从另一个文件导出 export * from './src/echarts'; export { default as IhrMore } from '@/components/common/more/more.vue' CommonJS module.exports调用者通过 require 对模块进行调用时返回的值(默认为一个新对象)。 module.exports = function (source, map) { this.callback( null, `export default function (Component) { Component.options.__docs = ${ JSON.stringify(source) } }`, map ) } AMD define(不能在异步函数中调用

Node.js模块导入导出

天大地大妈咪最大 提交于 2019-12-27 05:41:17
这篇文章本来是想模块导入导出和事件循环一起写的,但是感觉一起写的话会太长了,所以就分开两篇文章写吧。下一篇会重点介绍一下js中的事件循环,js代码到底是以何种顺序去执行的呢?我相信你看懂了事件循环再去看node对你的帮助是非常大的。 讲模块系统之前先认识一下node.js中的全局对象。 node.js的全局对象   众所周知的是在浏览器中的老大哥是谁,它就是window,this指向的也是window,那么在node中的全局对象就不是window了,而是global,可以在命令行中去看一下,想学习node的应该已经安装了node环境,如果还没有安装可以去 node中文网 去找到你对应的操作系统和版本去下载,如果node命令不是全局还需要配置一下环境变量,现在window操作系统安装上node之后应该就自动配置完成了。   打开命令行,输入 node 回车,然后输入 this 或者global就可以看到全局对象。你会看到好多东西,但是他比window对象是少太多太多了。   在JavaScript中,使用script标签去引入js文件的话,那么在js文件中的全局变量都会挂载到window对象下面,在各个文件中都可以共享它那个变量,比如jQuery,你引入了一个jQuery文件,那么在其它的文件当中,你是可以访问到$这个变量的。   而在node.js中是如何实现文件之间的的引入呢

webpack使用和踩过的坑

核能气质少年 提交于 2019-12-26 14:44:43
使用process.argv 获取命令行使用的参数 // 判断是否带production参数,production会压缩js var isprod = false; for (var i in process.argv) { if (process.argv[i] === "-p" || process.argv[i] === "--production") { isprod = true; break; } } url-loader 路径不正确,可通过 publicPath进行配置 output: { //context: path.resolve(__dirname, 'scripts'), path: path.resolve(HTML_DIST_PATH, "assets"), publicPath: '/dist/assets/',//当生成的资源文件和站点不在同一地方时需要配置改地址 e.g.:站点在src,资源生成到/src/static/dist,那么publicPath="/static/dist" filename: "[name].[hash:6].js", chunkFilename: "[id].chunk.js", } html-webpack-plugin minify: true 报错,请改成 new HtmlWebpackPlugin({

前端跨域

﹥>﹥吖頭↗ 提交于 2019-12-26 10:26:25
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源。也就是说如果协议,域名,或者端口有一个不同就是跨域。 那么为什么要用跨域? 其实是因为浏览器出于安全考虑,我们都知道浏览器有同源策略。如果没有同源策略的情况下,A网站可以被任意来源的Ajax访问到内容,如果当前A网站还处于登录态,那么对方就可以通过Ajax获得A网站的任何消息。当然跨域可以用来房子CSRF攻击,但是并不能完全阻止CSRF。 为什么跨域并不能完全阻止CSRF攻击呢?举个例子: 当请求跨域了,请求是必然发出去的,只是浏览器拦截了响应。你可能会疑问明明通过表单的方式可以发起跨域请求,为什么 Ajax 就不会。因为归根结底,跨域是为了阻止用户读取到另一个域名下的内容,Ajax 可以获取响应,浏览器认为这不安全,所以拦截了响应。但是表单并不会获取新的内容,所以可以发起跨域请求。所以跨域并不能完全阻止 CSRF,因为请求毕竟是发出去了。 上面讲到同源策略,那什么是同源策略呢? 同源策略(SOP)是一种约定,它是浏览器最核心也是最基本的安全功能。浏览器如果缺少同源策略,就会很容易收到xss,csrf等攻击。所谓同源是指“协议+域名+端口”三者相同,即便两个不同的域名指向同一个IP地址,也非同源。 下面来说一下几种方案来解决跨域问题 跨域的方案有: 1、通过jsonp跨域; 2、postMessage跨域; 3、跨域资源共享

gulp使用心得

╄→гoц情女王★ 提交于 2019-12-26 07:26:12
本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情。那就直接开始吧。 第一步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境。访问 http://nodejs.org ,然后点击大大的绿色的 install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm 会随着安装包一起安装,稍后会用到它。 第二步:使用命令行 也许现在你还不是很了解什么是命令行——OSX中的终端(Terminal),windows中的命令提示符(Command Prompt),但很快你就会知道。它看起来没那么简单,但一旦掌握了它的窍门,就可以很方便的执行很多命令行程序,比如Sass,Yeoman和Git等,这些都是非常有用的工具。 如果你很熟悉命令行,直接跳到步骤四。 为了确保Node已经正确安装,我们执行几个简单的命令。 node -v 回车(Enter),如果正确安装的话,你会看到所安装的Node的版本号,接下来看看npm。 npm -v 这同样能得到npm的版本号。 如果这两行命令没有得到返回,可能node就没有安装正确,尝试重启下命令行工具,如果还不行的话,只能回到第一步进行重装。 第三步:定位到项目 现在,我们已经大致了解了命令行并且知道如何简单使用它