commonjs

前端面试题整理—Node篇

三世轮回 提交于 2021-02-14 09:35:02
1、node有哪些特征,与其他服务器端对比   特征:单线程、事件驱动、非阻塞I/O   node 无法直接渲染静态页面,提供静态服务   node 没有根目录的概念   node 必须通过路由程序指定文件才能渲染文件   node 比其他服务端性能更好,速度更快 2、CommonJS中require/exports和ES6中import/export区别   CommonJS模块的重要特性是加载时执行,及脚本代码在require的时候,就会全部执行。一旦出现某个模块被“循环加载”就只输出已经执行的部分,还没有执行的部分是不输出的   ES6模块是动态引用,如果使用import从一个模块加载变量,那些变量不会缓存,而是成为一个指向被加载模块的引用,impor/export最终都是编译为require/exports来执行的 3、谈谈对node.js npm webpack的理解   ebpack能够把.vue后缀名的文件打包成浏览器能够识别的js,而这个.vue文件装换需要打包器vue-loader;这个vue-loader打包器是可以从npm上面下载,npm下载文件之后;webpack打包文件的时需要node环境去运行 4、使用npm有哪些好处?   通过NPM,你可以安装和管理项目的依赖,并且能够指明依赖项的具体版本号,可以通过package.json文件来管理项目信息

关于 webpack 你所忽略的细节(附源码分析)

帅比萌擦擦* 提交于 2021-02-13 10:55:26
注:本篇不是入门教程,入门请直接查看官方文档。本篇的主要目标是通过实际问题来介绍 webpack 中容易被人忽略的细节, 以及源码分析( 以最新发布的 release 版本1.14.0的源码为例 ), 并且提供几种解决方案。 随着前端技术的火热发展,工程化,模块化和组件化的思想已逐步成为主流,与之相应的,就需要有一整套工具流可以支撑起它。 现在比较热门的前端资源模块化管理和打包工具应该非 Webpack 莫属了。 Webpack 是什么 它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 JSON、Coffeescript、 LESS 等。 —引自 Webpack 中文指南 使用举例 我们来看一下官方文档中的最小用例,新建并写入以下内容到这两个文件: cats.js var cats = [ 'dave' , 'henry' , 'martha' ]; module .exports = cats; app.js (Entry Point) cats = require ( './cats.js' ); console .log(cats); 这个时候,就可以使用

Load Stripe.js with Require.js

一笑奈何 提交于 2021-02-10 18:00:15
问题 I'm having trouble loading Stripe.js with Require.js. My setup looks a bit like this requirejs.config({ paths: { 'stripe': 'https://js.stripe.com/v3/?noext' }, shim: { 'stripe': { exports: 'stripe' } } }); This actually does work, that is, I can see the script tag in the dom but when I require it it's undefined . Any ideas what could be happening here? 回答1: The global that stripe exports is Stripe with an uppercase "S". The exports needs to match the global export exactly , meaning case. This

webpack 优化

坚强是说给别人听的谎言 提交于 2021-02-07 17:51:54
1 优化loader配置 1.1 缩小文件匹配范围(include/exclude) 通过排除node_modules下的文件 从而缩小了loader加载搜索范围 高概率命中文件 module: { rules: [ { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/, // 排除不处理的目录 include: path. resolve(__dirname, 'src') // 精确指定要处理的目录 } ] } 1.2 缓存loader的执行结果(cacheDirectory) acheDirectory是loader的一个特定的选项,默认值是false。指定的目录(use: ‘babel-loader?cacheDirectory=cacheLoader’)将用来缓存loader的执行结果,减少webpack构建时Babel重新编译过程。如果设置一个空值(use: ‘babel-loader?cacheDirectory’) 或true(use: ‘babel-loader?cacheDirectory=true’) 将使用默认的缓存目录(node_modules/.cache/babel-loader),如果在任何根目录下都没有找到 node_modules 目录,将会降级回退到操作系统默认的临时文件目录

Webpack import from files that use module.exports

蓝咒 提交于 2021-02-07 09:28:36
问题 I have React app and a file where I want to store things related to api. const proxy = require('http-proxy-middleware'); const path = require('path'); //..... const targetApi = (objectWithUrlEntries) => { Object.keys(objectWithUrlEntries).forEach((key) => { objectWithUrlEntries[key] = path.join('/api/', objectWithUrlEntries[key]); }); }; module.exports.proxyExpressCalls = proxyExpressCalls; module.exports.devServerProxyConfig = devServerProxyConfig; module.exports.targetApi = targetApi; Some

50道JavaScript基础面试题(附答案)

こ雲淡風輕ζ 提交于 2021-01-31 04:58:25
△ 是 新朋友 吗?记得先点 web前端学习圈 关注我哦~ 1 介绍JavaScript的基本数据类型 Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有对象的父对象 数据封装类对象:Object、Array、Boolean、Number 和 String 其他对象:Function、Arguments、Math、Date、RegExp、Error 新类型:Symbol 2 说说写JavaScript的基本规范? 1) 不要在同一行声明多个变量 2) 使用 ===或!==来比较true/false或者数值 3) switch必须带有default分支 4) 函数应该有返回值 5) for if else 必须使用大括号 6) 语句结束加分号 7) 命名要有意义,使用驼峰命名法 3 jQuery使用建议 1) 尽量减少对dom元素的访问和操作 2) 尽量避免给dom元素绑定多个相同类型的事件处理函数,可以将多个相同类型事件 处理函数合并到一个处理函数,通过数据状态来处理分支 3) 尽量避免使用toggle事件 4 Ajax使用 全称 :Asynchronous Javascript And XML 所谓异步,就是向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情

Is it possible to compile to commonjs from es6 with webpack

最后都变了- 提交于 2021-01-29 16:11:00
问题 The question is as the title suggests- if you have written your source code as es6 modules ( import ... from ... ) can you then compile this source back to node.js style commonjs modules ( const ... = require(...) ) using Webpack? 回答1: You sure can. Here is my webkack.config.js which is doing exactly as you ask for a legacy project that we maintain: var path = require("path"); var webpack = require('webpack'); var HardSourceWebpackPlugin = require("hard-source-webpack-plugin"); module.exports

How to make TypeScript generate a CommonJS valid module?

安稳与你 提交于 2021-01-28 01:50:31
问题 Let's say I have a module in TypeScript: export default function myModule(name: string): void { alert(`Hello, ${name}!`) } When I run tsc to build the above code, and try to import the generated code through Node.js (pure JavaScript): const myModule = require('./dist/myModule.js') myModule('Luiz') // ERROR! `myModule` is `undefined` The only way to make it work is by using .default after the require() , which is not what I want: // ↓↓↓↓↓↓↓↓ const myModule = require('./dist/myModule.js')

Using rollup in combination with babel and commonjs plugins doesn't resolve all modules

末鹿安然 提交于 2021-01-27 17:18:32
问题 I'm using rollup with the Babel and CommonJS plugins, like this: const inputOptions = { input: "...", plugins: [ resolve(), babel({ exclude: "node_modules/**", externalHelpers: true, include: "**/components/**/*.js", }), commonjs(), ], }; But what happens is that modules referenced from components don't seem to be recognized by the CommonJS plugin, they end up as plain require(...) statements in the output (just like the source input) where of course they cannot be resolved. Modules imported

Jest - Mock a constant property from a module for a specific test

别说谁变了你拦得住时间么 提交于 2021-01-26 21:21:02
问题 So, I'm attempting to do something which on the surface should be very simple... I have some constants defined in: ` //constants.js module.exports = { MY_CONSTANT: "TEST" } ` I have a file which I'm trying to test which has a branching statement like this: ` //file to test //... if(CONSTANTS.MY_CONSTANT === "TEST") {...} ... ` And I have a test like this: ` //test it("Should do something when MY_CONSTANT === "TEST, () => { //This is fine as it is exported as TEST }) it("Should do something