require

webpack打包avalon+oniui+jquery

青春壹個敷衍的年華 提交于 2020-02-29 04:16:37
随着 avalon 的发展壮大,我根据CSDN的统计数字,中国前端大概有1%的人在使用 avalon 了。 avalon的最大优势是能兼容IE6,并且其API是非常稳定,只是在1.3.7 对ms-duplex的拦截器做了一次改动(但这次改动也向下兼容),1.5中去除avalon.define的旧风格支持,废掉ms-widget指令改成更强大的自定义标签指令。相对于其他MVVM框架来说,是非常的良心。此外,配套是非常完善,尤其是oniui,也支持到IE6。至于对移动端啊,微信啊,支持也非常好,难怪每天加群的人这么多。 不过,一个问题是,avalon没有提供打包机制,虽然官网有教如何用requirejs打包avalon(比如滴滴出行,他们则是用fis3打包avalon ),但也有一些小公司,因为前端团队实力不济,无法实现打包。因此就有了这篇文章了。 本文是使用当今最强大的构建工具webpack实现的,各种看官首先得装上npm。 建立一个新工程(我是将此工程起名为 oni ), 然后用npm初始化它,目的是建立一个package.json文件: 然后全局安装以下东西 $ npm install webpack -g $ npm install style-loader css-loader url-loader text-loader -g 然后再到oni目录下执行 npm link

wampserver环境配置局域网访问

大兔子大兔子 提交于 2020-02-28 10:43:26
安装好wamp后,想用手机通过局域访问电脑上wamp下的网页,结果出现如下提示403错误: 第一步:找到 conf 这个文件 : 找到下图中红色方框中的onlineoffline tag - don’t remove,将原来的Require local替换为Require all granted; 注意几种常用格式,自己可以灵活配置: Require local 仅允许本地访问; Require all denied 拒绝所有访问; Require all granted 允许所有访问; Require ip 192.168.0.1 仅允许IP:192.168.0.1 访问; Require not ip 192.168.0.1 仅禁止IP:192.168.0.1访问; 修改为 :Require all granted(允许所有) 注意这里改的只是apche的全局配置,一般来说,这个配置是正对所有的,也就是权重等级是最低,所以还需要修改一个位置: 第二步:找到 httpd-vhosts.conf 这个文件 : 还需要修改这个: 这里可以: Require local #允许本地访问 Require ip 192.168.1 #允许本地访问 或者: Require local Require ip 192.168.1.100 Require ip 192.168.1.101 到此

include 和require 区别

試著忘記壹切 提交于 2020-02-28 03:48:23
首先include和require都是引入指定的文件。_once表示只引入一次,即之前已经引入过的不再引入。 区别: 1.加载失败的处理方式不同 include在引入不存文件时产生一个警告且脚本还会继续执行, require则会导致一个致命性错误且脚本停止执行。 2.include()是有条件包含函数,而 require()则是无条件包含函数。 3.文件引用方式 include有返回值,而require没有 来源: CSDN 作者: 小白亮 链接: https://blog.csdn.net/weixin_45624316/article/details/104544413

rxjs6 Combination Operators

烈酒焚心 提交于 2020-02-28 03:25:15
combineAll 组合多个流, 每次有一个流更新时, 发出所有流最新值的数组 const source$ = of(200, 400, 600) source$.pipe( map(v => interval(v)), combineAll() ).subscribe(console.log) combineLatest 由rxjs导入, 和combineAll作用一样, 用于组合最新的观察值 const {combineLatest, interval, of} = require('rxjs') const {map} = require('rxjs/operators') const source1$ = interval(200) const source2$ = interval(400) const source3$ = interval(600) // 可传入数组或者参数式逐个传入 // combineLatest(source1$, source2$, source3$).subscribe(console.log) combineLatest([source1$, source2$, source3$]).subscribe(console.log) concat / concatAll 串行连接流, 只有当前面的流完成后, 才会从继续后面的流中继续取数据

gulp + webpack 构建多页面前端项目

戏子无情 提交于 2020-02-28 03:10:10
修改增加了demo地址 gulp-webpack-demo 之前在使用gulp和webpack对项目进行构建的时候遇到了一些问题,最终算是搭建了一套比较完整的解决方案,接下来这篇文章以一个实际项目为例子,讲解多页面项目中如何利用gulp和webpack进行工程化构建。本文是自己的实践经验,所以有些解决方案并不是最优的,仍在探索优化中。所以有什么错误疏漏请随时指出。 使用gulp过程中的一些问题,我已经在另外一篇文章讲到了 grunt or gulp 前言 现在为什么又整了一个webpack进来呢? 我们知道webpack近来都比较火,那他火的原因是什么,有什么特别屌的功能吗?带着这些疑问,继续看下去。 在使用gulp进行项目构建的时候,我们一开始的策略是将所有js打包为一个文件,所有css打包为一个文件。然后每个页面都将只加载一个js和一个css,也就是我们通常所说的 ==all in one== 打包模式。这样做的目的就是减少http请求。这个方案对于简单的前端项目来说的是一个万金油。因为通常页面依赖的js,css并不会太大,通过压缩和gzip等方法更加减小了文件的体积。在项目最开始的一段时间内(几个月甚至更长),一个前端团队都能通过这种办法达到以不变应万变的效果。 然而,作为一个有追求(爱折腾)的前端,难道就满足于此吗? 妈妈说我不仅要请求合并,还要按需加载,我要模块化开发

(转)爬虫,其实本就是这么简单

限于喜欢 提交于 2020-02-27 18:49:46
本文转载自: 爬虫,其实本就是这么简单-掘金 作者: 吸取我无,分享我有 时至今日,大前端思想已经深入人心,很多知识都要涉及到。所以对于现在的前端儿来说也是来着不拒的,练就吸星大法的时候,尽量多的吸收知识,最后达到物尽其用的效果 最近,我也是一直在学习关于爬虫方面的知识,源于之前项目中需要用到的地铁信息数据并不是用爬虫爬下来的数据,而是直接copy的 尽管这些数据一时半会确实不会有太大的变化,不过总觉得还是有些low的。于是学习了关于爬虫的知识后,打算和大家一起探讨交流一番,下面直接进入正题 首先,先来说一下 爬虫 和 Robots协议 是什么 然后再来介绍 爬虫的基本流程 最后根据实际栗子爬一个 豆瓣最近上映的电影 来小试牛刀一把 爬虫及Robots协议 先看定义:爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。 再看下 Robots协议 的介绍, robots.txt 是一个文本文件, robots.txt 是一个协议不是一个命令 robots.txt 是爬虫要查看的第一个文件, robots.txt 告诉爬虫在服务器上什么文件是可以被查看的,爬虫机器人就会按照文件中的内容来确定访问范围 下图是 豆瓣电影 页面关于 robots协议 列出来的访问范围 爬虫和Robots协议是紧密相连的

rxjs6 Conditional and Boolean Operators & Mathematical and Aggregate Operators

牧云@^-^@ 提交于 2020-02-27 12:43:14
Conditional and Boolean Operators defaultIfEmpty 如果源流在结束时没有发出一个值, 则发出一个默认值 const {of} = require('rxjs') const {defaultIfEmpty} = require('rxjs/operators') of(1, 2, 3).pipe( defaultIfEmpty('abc') ).subscribe(console.log) of().pipe( defaultIfEmpty('abc') ).subscribe(console.log) every 类似数组, 返回值为流中的数据是否都满足某个条件 const {of} = require('rxjs') const {every} = require('rxjs/operators') const source$ = of(1, 2, 3) source$.pipe( every(x => x < 5) ).subscribe(console.log) // true source$.pipe( every(x => x % 2) ).subscribe(console.log) // false find & findIndex 返回第一个满足条件的值/位置, 第一个参数为比较函数,

rxjs6 Creation Operators

岁酱吖の 提交于 2020-02-27 12:23:16
Creation Operators 常用于创建Observable ajax 有三种形式, 原生, json, 和使用object自定义header const url = `https://api.github.com/users?per_page=5` ajax(url).pipe( map(userResponse => console.log('users resp: ', userResponse)), catchError(error => { console.log('error: ', error); return of(error); }) ).subscribe() ajax.getJSON(url).pipe( map(userResponse => console.log('users json: ', userResponse)), catchError(error => { console.log('error: ', error); return of(error); }) ).subscribe() ajax({ url: 'https://httpbin.org/delay/2', method: 'POST', headers: { 'Content-Type': 'application/json', 'rxjs-custom-header'

nodejs-基本语法

北慕城南 提交于 2020-02-27 11:53:56
初识nodejs-基本语法 nodejs是JavaScript的一个在后端的运行环境,关于nodejs的认识,我们可以看上一篇文章<<初识nodejs>>,我们要使用nodejs,首先要安装nodejs,安装的东西你可理解为java中的运行环境一样,至于怎么安装,我们最好安装nvm(nodejs version manage),安装的过程也写在了另一篇博客<>(那时懵懂期,回头再修改的详细一点) 那么nodejs作为一个后台的平台,他可以为我们提供的很多,我们可以用JavaScript语言进行文件的获取,删除等等文件操作,我们可以用JavaScript开一个本地服务器,我们可以和mongoDB配合来搭建后台,他给我们前端带来了太多的惊喜,让我们深深的迷恋上了它,但正所谓学一个新知识时,我们都需要从简,从基础学起,那么在nodejs环境下,我们的基本语法又是怎样的呢? 模块 nodejs是支持ES6的,所以在这里你可以尽情的去写,不用考虑浏览器不兼容了(这里是后端,哈哈),安装好了nodejs后,我们在终端输入node,就会进入到nodejs环境,这里我们可以输入: console.log("hello world!"); 可以看到我们控制台输出了hello world,我第一次写的时候还以为这是chrome的开发者模式呢,这或许就是chrom v8引擎的作用吧

[技术翻译]在现代JavaScript中编写异步任务

[亡魂溺海] 提交于 2020-02-27 10:05:48
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站 ( Generate Static Websites with Nuxt ) 05.[译]Web网页内容是如何影响电池功耗的 ( How Web Content Can Affect Power Usage ) 06.[译]在现代JavaScript中编写异步任务 ( https://web.dev/off-main-thread/ ) 我翻译的技术文章都放在一个github仓库中,如果觉得有用请点击star收藏。我为什么要创建这个git仓库?目的是通过翻译国外的web相关的技术文章来学习和跟进web发展的新思想和新技术。git仓库地址: https://github.com/yzsunlei/javascript-article-translate 在本文中,我们将探讨过去围绕异步执行的JavaScript的演变以及它如何改变我们编写和读取代码的方式。我们将从Web开发的开始,一直到现代异步模式示例。 JavaScript作为编程语言具有两个主要特征,这两个特征对于理解我们的代码是如何工作的都很重要。首先是它的同步特性,这意味着代码将几乎在您阅读时逐行运行,其次,它是单线程的,任何时候都只执行一个命令。 随着语言的发展,新的模块出现在场景中以允许异步执行