require

webpack-Bundler源码编写(生成代码)

风流意气都作罢 提交于 2020-02-20 17:24:35
接下来我们要生成真正可以在浏览器中运行的代码: const makeDependenciesGraph=entry=>{ ... } const generateCode=entry=>{ const graph=JSON.stringify(makeDependenciesGraph(entry)); return ` (function(graph)){}(${graph}); `; } const code=generateCode('./src/index.js'); console.log(code); 输出: (function(graph)){}({"./src/index.js":{"dependencies":{"./message.js":"src/message.js"},"code":"\"use strict\";\n\nvar _message = _interopRequireDefault(require(\"./message.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nconsole.log(_message[\"default\"]);"},"src

Lua中的loadfile、dofile、require详解

折月煮酒 提交于 2020-02-20 10:22:05
本来今天不应该讨论这几个函数的,不过,为了凑字数..不,为了方便以后的文章,还是要谈谈这几个基础函数的~ 1.loadfile——只编译,不运行 loadfile故名思议,它只会加载文件,编译代码,不会运行文件里的代码。 比如,我们有一个hellofile.lua文件: 复制代码 代码如下: print(“hello”); function hehe() print(“hello”); end 这个文件里有一句代码,和一个函数。试试用loadfile加载这个文件,如下代码: 复制代码 代码如下: loadfile("hellofile.lua"); print("end"); 输出结果如下: 复制代码 代码如下: [LUA-print] end 如果说loadfile会执行文件里的代码的话,那么,应该会输出hello字符串的。 结果表明,它是不会执行代码的。 2.dofile——执行 很明显,dofile就是会执行代码的家伙了,如下代码: 复制代码 代码如下: dofile("E:/Android/wordspace_cocosIDERc0/CocosLuaTest/src/hellofile.lua"); print("end"); 输出结果如下: 复制代码 代码如下: [LUA-print] hello [LUA-print] end 这里有点尴尬,文件路径我用了绝对路径

02fs

十年热恋 提交于 2020-02-19 12:19:14
文件读取大部分都是拥有异步和同步的两个接口 普通的文件读取 // 同步读取 const fs = require('fs') try { const data = fs.readFileSync('./hello.txt', 'utf8') }catch(err) { throw err } // 异步读取 fs.readFile('./hello.txt','utf8', function(err, data) { if(err) throw err console.log('读取成功:' + data) }) 以流的方式读取 const fs = require('fs') const readStream = fs.createReadStream('./hello.txt', 'utf8') readStream.on('data', function(chunk){ console.log('读取数据:'+ chunk) }).on('error', function(err) { console.log(err.message) }).on('end', function() { console.log('没有数据了') }).on('close', function() { console.log('已经关闭') }) 简单写入 const fs = require(

Node.js学习笔记(4)——除了HTTP(服务器和客户端)部分

谁说胖子不能爱 提交于 2020-02-18 19:44:04
很多node入门的书里面都会在介绍node特性的时候说:单线程,异步式I/O,事件驱动。 Node不是一门语言,它是运行在服务器端的开发平台,官方指定语言为javascript。 阻塞和线程: 线程在执行中如果遇到磁盘读写或网络通信(统称为 I/O 操作),通常要耗费较长的时间,这时操作系统会剥夺这个线程的 CPU 控制权,使其暂停执行,全力执行这个I/O操作,同时将资源让给其他的工作线程,这种线程调度方式称为阻塞。当其他完成之后,系统再恢复它对cpu的控制权,继续执行,这就是同步I/O或者阻塞式I/O。 所以这个模式之下,一个线程只能处理一个任务,要么是计算操作,要么是I/O操作等等。每当有多的请求发过来的时候,必须多加线程用来响应。 同样的,在异步式或者非阻塞式,系统对所有的I/O操作部阻塞,而是将这个耗费时间和资源的操作报告给OS,就继续执行下一条语句。当OS执行完毕这个I/O操作之后,以事件的形式通知原来请求挂载I/O操作的线程,线程会在特定的时间处理这个事情。所以,必线程必须有事件循环,不断检查有没有未处理的事件。 所以这个模式下,cpu的核心利用率永远是100%,I/O以事件形式通知。 总结:多线程同步式I/O阻塞模式通过加开线程响应更多的请求,好处是在多核cpu的情况下利用更多的核。 单线程模式异步式I/O非阻塞式一个线程永远在执行计算操作

require.js

喜欢而已 提交于 2020-02-17 18:49:15
1. require.js作用 (1)实现js文件的异步加载,防止js加载阻塞页面渲染; (2)管理模块之间的依赖性,便于代码的编写和维护。 使用程序调用的方式加载js,防止出现大量使用<script src="*.js"></script>加载js文件。 2. 基本API require会定义三个变量:define,require,requirejs,其中 require === requirejs,一般使用require更简短。 (1)define,此api定义一个模块。 (2)require,加载依赖模块,并执行加载完后的回调函数。 3. data-main 假定我们自己的代码文件是main.js,和下载的require.js文件放在js目录下面。 <script src="js/require.js" data-main="js/main"></script> data-main属性的作用是,指定网页程序的主模块。 在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。 4. 主模块 main.js 的编写 我把它称为"主模块",意思是整个网页的入口代码。它有点像C语言的main()函数,所有代码都从这儿开始运行。 常见的情况是,主模块依赖于其他模块

TypeError: __init__() missing 1 required positional argument: 'on_delete'

旧城冷巷雨未停 提交于 2020-02-17 06:20:41
Django 中创建Model时报以下错误: TypeError: init () missing 1 required positional argument: ‘on_delete’ 代码如下: from django.db import models # from django.contrib.auth.models import AbstractUser class UserInfo(models.Model): user_type_choices = ( (1, '普通用户'), (2, 'VIP'), (3, 'SVIP') ) user_type = models.IntegerField(choices=user_type_choices) username = models.CharField(max_length=32, verbose_name="用户名") password = models.CharField(max_length=64, verbose_name="密码") phone = models.CharField(max_length=32, null=True, blank=True, verbose_name="手机号码") # phone =models.CharField(max_length=32, null=True, blank

解读 vue-cli 脚手架(二):npm run build 的背后

こ雲淡風輕ζ 提交于 2020-02-16 14:16:35
接上一片文章: 解读 vue-cli 脚手架(一):npm run dev的背后 如果没有看过我的上一篇文章,请先移步去看一下哈! 时隔一年多,之前写的文章感觉大家还挺喜欢的,一直说要更新下一篇。但是一直没有机会,没时间,还有就是,感觉自己的技术,可能不足以支持我继续往下走。但是经过这个一年多的历练,感觉很多东西考虑的会更周全,不负期待! 废话说一堆,步入正题。 一、前言 这里有必要声明一下,上一篇文章我是 2018-09-19 发布的,也就是说,距离现在(2020-02-03)至少已经过去了一年半的时间,原来的 vue-cli 变成了 vue@cli 脚手架和项目工程已经变得面目全非,和原来差别非常大。那现在的这个文章还值得再去看嘛? 我的观点是 :主要看你抱着什么姿势来看这个文章吧,如果你是想急忙解决项目中遇到的一些问题。可能这个文章不是很适合你,因为你看了也不会有立竿见影的效果,不会帮助你马上解决你的问题。 但是如果你想往更高的一个阶段走,或是满足之前的好奇心,为什么这个脚手架能够打包出项目需要的东西来,这个是怎么跑起来的。那么这个文章你还是很值得看的。 因为,虽然 vue@cli 升级了,运用的方式不同了,项目结构变了。但是我要说的是,如果你熟悉底层的话,项目结构,脚手架这些东西感觉只是换汤不换药,最终还是围绕着 webpack 去组织的项目

脱离Rails使用Activerecord

一个人想着一个人 提交于 2020-02-16 05:29:54
ActiveRecord 是迄今为止我所见到的最好的ORM library ,除了DB2,支持所有的主流数据库。如果你想知道如何单独使用Activerecord,please follow me。 介绍一下我的系统环境: OS:windows2003 DataBase: Oracle10g Ruby: 1.8.7 (2008-05-31 patchlevel 0) [i386-mswin32] activerecord: 2.2.2 activerecord-oracle_enhanced-adapter: 1.1.8 ruby-oci8:1.0.3 准备工作: 1.安装ruby,不用说了吧 2.安装activerecord, gem install activerecord 3.安装adapter, gem install activerecord-oracle_enhanced-adapter 4.创建一个试验目录 mkdir dbtest ok,that's all 创建一个rb文件,内容如下 Ruby代码 require 'rubygems' require 'active_record' ActiveRecord::Base.establish_connection( :adapter => 'oracle_enhanced' , :database => 'test'

项目实战一、基础组件安装

99封情书 提交于 2020-02-15 07:41:52
1.安装4.2.2版本的react-router-dom cnpm install react-router-dom@^4.2.2 --save 2.安装axios yarn add axios 3.安装4.1.0版本的less-loader cnpm install less-loader@^4.1.0 --save 4.安装后package.json文件如下 5.用yarn eject暴露webpack文件 yarn eject 暴露后会新增一个config文件夹为webpack的配置文件 6.通过yarn add less安装less 7.在webpack.config.js中可以修改配置例如支持less文件的加载修改以下内容在webpack.config.js中添加对less的解析 //解析less文件 { test: /\.less$/, use: [ require.resolve('style-loader'), { loader: require.resolve('css-loader'), options: { importLoaders: 1, }, }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work //

项目实战三、antd的babel-plugin-import实现按需加载

帅比萌擦擦* 提交于 2020-02-15 07:14:20
babel-plugin-import 是一个用于按需加载组件代码和样式的 babel 插件( 原理 ) 1.通过yarn add babel-plugin-import 安装babel-plugin-import插件 yarn add babel-plugin-import 2.在webpack.config.js中添加如下代码进行配置antd的按需加载 ['import',{libraryName: 'antd',style:true}], 整体代码如下: 'use strict'; const fs = require('fs'); const path = require('path'); const webpack = require('webpack'); const resolve = require('resolve'); const PnpWebpackPlugin = require('pnp-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); const InlineChunkHtmlPlugin =