- 主题:现在你们写 js 还会在发布的时候转成 es5 吗?
大哥,我不是新手。。不用向我解释那么多。我问的是 babel 编译的 target,大家还会不会选择对 es6 支持不好的 ie11/edge 以及早期版本的 chrome (有些 winxp 机器还在用旧版的 chrome, 因为新版的不再支持 32 位,也不再支持 winxp 了),毕竟选择支持越多的浏览器,生成的目标代码也就越大。
不单是 js, 还有 css. 我想问的是,大家是不是不再支持 ie/old edge/firefox 了。我最近看到好些网站不支持我用的 firefox 了,显示会错乱。。
【 在 eGust (十年) 的大作中提到: 】
: js 世界里有几种工具,一种是 transpiler,比如 babel.js,可以把翻译许多新语法翻译成老语法。另外一种是 polifill,现在最流行的应该是 corejs,就是给不支持新语法的浏览器尽量打补丁,但是有些是补不出来的,比如 Proxy。还有一个工具是 browserslist,它的作用是给
: 虽然也可以完全自己从头搭,但是这年头随便找个 boilerplate、create-xxx-app 之类的前端库,要么带个 .browserslistrc 文件,要么直接放在 package.json 里面,你只要填想支持什么浏览器就可以了,根本不是需要额外操心的
--
FROM 110.85.22.*
还没开始做啊。我最近又开始写 js,离开 js 社区两年了,所以想问一下最近有没有新的程序库做得好一些。如果有,我就不用做了,省事。
至于怎么 cancel,这是实现的细节。光鲜的 API 底下都是龌龊的实现。只要知道上层是通过异常判断协程被杀死就行了。
【 在 pangwa (学门手艺,混口饭吃.) 的大作中提到: 】
: 可以给个demo么, 比如怎么cancel... 基于现有语言特性, 感觉用async/await实现不出来啊..
: 一样的写法啊。。async function 其实就是 function *,yield 相当于 await. 字对字直接替换你上面那段代码就是我打算做的协程库。
: 但 yield 和 await 有些隐秘的区别。所以以前用 generator 搞协程会有一些问题。
: ...................
--
FROM 110.85.22.*
那就看人了,css 这东西谁都保不齐的。我们这开封菜外卖,windows 里 chrome 没啥问题,mac 里 chrome 就有个别地方不正常。ios 里不正常也就算了,毕竟是 safari 的核,能做成 win/mac 都不一样我也是挺佩服的
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 大哥,我不是新手。。不用向我解释那么多。我问的是 babel 编译的 target,大家还会不会选择对 es6 支持不好的 ie11/edge 以及早期版本的 chrome (有些 winxp 机器还在用旧版的 chrome, 因为新版的不再支持 32 位,也不再支持 winxp 了),毕竟选择支持越多的浏览器,生
: 不单是 js, 还有 css. 我想问的是,大家是不是不再支持 ie/old edge/firefox 了。我最近看到好些网站不支持我用的 firefox 了,显示会错乱。。
--
FROM 115.188.159.*
现有的promise也有些支持cancel啊,不过大多都是半残(因为要做好必须成体系的支持),至于promise和async await没必要区分,本来就能混用
对了 你说用generator实现协程的问题能简单说下吗?
【 在 hgoldfish 的大作中提到: 】
:
: 还没开始做啊。我最近又开始写 js,离开 js 社区两年了,所以想问一下最近有没有新的程序库做得好一些。如果有,我就不用做了,省事。
:
: 至于怎么 cancel,这是实现的细节。光鲜的 API 底下都是龌龊的实现。只要知道上层是通过异常判断协程被杀死就行了。
:
: --
: ..................
发自「今日水木 on iPhone X」
--
FROM 101.85.232.*
我们这边是比较重的应用,不转 es5,所以没啥问题
那种面向全体用户的,官网啥的会转,会避免用转不了的新功能,
这种已经很少了,就官网的几个页面和支付,落地页面
【 在 hgoldfish 的大作中提到: 】
: 所以我最初的问题就是你们现在会改这个参数吗?
而且有些新特性也不是改个参数就能用的,比如 Map:
let old ...
--
FROM 124.64.19.*
generator 就是 coroutine. 以下是一段使用 coroutine 实现 generator 的代码:
async generator(result) {
for (int i = 0; i < 10; ++i) {
result.set(i);
}
result.set(null);
}
async caller() {
let result = new Event();
generator(result);
while (true) {
let i = await result.wait();
result.clear();
if (i === null) {
break;
}
console.debug(result);
}
}
【 在 pangwa (学门手艺,混口饭吃.) 的大作中提到: 】
: 现有的promise也有些支持cancel啊,不过大多都是半残(因为要做好必须成体系的支持),至于promise和async await没必要区分,本来就能混用
: 对了 你说用generator实现协程的问题能简单说下吗?
: 发自「今日水木 on iPhone X」
: ...................
--
修改:hgoldfish FROM 110.85.22.*
FROM 110.85.22.*
这里用到一个特殊的类型 Event,它的代码是这样:
class Event {
constructor() {
this.flag = false;
this.value = null;
this.waiters = [];
}
isSet() {
return this.flag;
}
set(value) {
this.value = value;
if (!this.flag) {
this.flag = true;
while (this.waiters.length > 0) {
let waiter = this.waiters.shift();
waiter.resolve(value);
}
}
}
clear() {
this.flag = false;
this.value = null;
}
async wait() {
if (this.flag) {
return this.value;
}
let waiter = {};
let promise = new Promise((resolve, _) => {
waiter["resolve"] = resolve;
});
this.waiters.push(waiter);
return await promise;
}
}
【 在 hgoldfish (老鱼) 的大作中提到: 】
: generator 就是 coroutine. 以下是一段使用 coroutine 实现 generator 的代码:
: async generator(result) {
: for (int i = 0; i < 10; ++i) {
: ...................
--
FROM 110.85.22.*
感觉就是轮了一个promise啊....
【 在 hgoldfish (老鱼) 的大作中提到: 】
这里用到一个特殊的类型 Event,它的代码是这样:
class Event {
constructor() {
this.flag = false;
this.value = null;
this.waiters = [];
}
isSet() {
return this.flag;
}
set(value) {
this.value = value;
if (!this.flag) {
this.flag = true;
while (this.waiters.length > 0) {
let waiter = this.waiters.shift();
waiter.resolve(value);
}
}
}
clear() {
this.flag = false;
this.value = null;
}
async wait() {
if (this.flag) {
return this.value;
}
let waiter = {};
let promise = new Promise((resolve, _) => {
waiter["resolve"] = resolve;
});
this.waiters.push(waiter);
return await promise;
}
}
【 在 hgoldfish (老鱼) 的大作中提到: 】
: generator 就是 coroutine. 以下是一段使用 coroutine 实现 generator 的代码:
: async generator(result) {
: for (int i = 0; i < 10; ++i) {
: ...................
--
FROM 101.85.232.*
这里利用了 promise,但是跟 promise 是不一样的。你再仔细看看。
这个 Event 很好用。你可以认为它是一个协程间的消息队列,类似于 go 的 channel. 可以用于两个协程之间通信。
【 在 pangwa (学门手艺,混口饭吃.) 的大作中提到: 】
: 感觉就是轮了一个promise啊....
: 这里用到一个特殊的类型 Event,它的代码是这样:
: class Event {
: ...................
--
FROM 110.85.22.*
恕再下愚钝, 完全没有get到在js 实现这个东西的点........
如果你说的是message channel, 有更好的做法啊.
比如
https://redux-saga.js.org/docs/advanced/Channels.html 【 在 hgoldfish (老鱼) 的大作中提到: 】
这里利用了 promise,但是跟 promise 是不一样的。你再仔细看看。
这个 Event 很好用。你可以认为它是一个协程间的消息队列,类似于 go 的 channel. 可以用于两个协程之间通信。
【 在 pangwa (学门手艺,混口饭吃.) 的大作中提到: 】
: 感觉就是轮了一个promise啊....
: 这里用到一个特殊的类型 Event,它的代码是这样:
: class Event {
: ...................
--
FROM 101.85.232.*