w3cmm

Deno 1.0 有哪些特性?

deno 1.0

动态语言是有用的工具。脚本编写使用户可以快速简洁地将复杂的系统连接在一起并表达想法,而不必担心诸如内存管理或构建系统之类的细节。近年来,像Rust和Go这样的编程语言使生成复杂的本地机器代码变得更加容易;这些项目是计算机基础架构中极为重要的发展。但是,我们声称拥有一个能够解决各种问题领域的强大脚本环境仍然很重要。 JavaScript是使用最广泛的动态语言,可通过Web浏览器在每台设备上运行。大量的程序员精通JavaScript,并且已经在优化其执行方面投入了大量精力。通过像ECMA Inter … 继续阅读

发表在 Memo | |
w3cmm

SameSite cookie 指南

如果嵌入的内容与顶级浏览上下文不在同一个站点,则为第三方内容。

Chrome,Firefox,Edge和其他浏览器将根据IETF提案Incrementally Better Cookies更改其默认行为,以便: 没有SameSite属性的cookie将被视为SameSite=Lax,这意味着默认行为是将cookie仅限于第一方上下文。 跨站点使用的Cookie必须指定SameSite=None; 确保将其包含在第三方上下文中。 这将成为Chrome 80的默认行为,Chrome 80将于2019年12月19日发布Beta版,并计划于2020年2月发布稳定版。 … 继续阅读

发表在 Memo | |
w3cmm

Cookies SameSite 详解

服务器使用Set-Cookie标头设置cookie

A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can revie … 继续阅读

发表在 Memo | |
w3cmm

package-lock.json有什么作用?

阅读本文前,需要先了解语义版本控制。 package.json是一个文件,其中包含有关您的项目的信息(名称,版本等),并且列出了项目所依赖的package。 在package.json下列出的每个依赖项之后,都有一个类似^2.20.0的数字,它是该package的版本,但在版本之前是^。 因此,^这个小家伙可以成为您项目的总破坏者。 版本之前的^符号告诉npm,如果有人clone了该项目并在目录中运行npm install,则在其node_modules中安装该package的最新次要版本。 假 … 继续阅读

发表在 Memo | |
w3cmm

run again with the –allow-net flag – Deno

如果你在运行deno的时候出现了类似下面的错误,不要慌,只是参数顺序错了,把deno run welcome.ts –allow-net改为deno run –allow-net welcome.ts就可以了。 Compile file:///Users/admin/Documents/study/deno-test/welcome.ts error: Uncaught PermissionDenied: network access to “0.0.0.0:8080”, run again … 继续阅读

发表在 Memo | |
w3cmm

command not found: deno – macOS

如果你通过curl已经成功安装了deno,却出现command not found: deno,是因为环境变量没配置好。 如果你用的终端是bash(macOS Catalina之前版本默认终端),那么在~/.bash_profile中添加下面的环境变量(admin要换成你的用户名): export DENO_INSTALL=”/Users/admin/.deno” export PATH=”$DENO_INSTALL/bin:$PATH” 保存后,在终端执行source ~/.bash_prof … 继续阅读

发表在 Memo | |
w3cmm

Node中的设计失误 – Ryan Dahl

背景 我通过其初始开发来创建和管理Node。 我的目标主要集中在对事件驱动的HTTP服务器进行编程上。 当时的重点对于服务器端JavaScript至关重要。当时还不明显,但是服务器端JS需要一个事件循环才能成功。 当我2012年离开时,我感到Node已经(或多或少)实现了我对用户友好的非阻塞框架的目标: 核心支持许多协议:HTTP,SSL,… 在Windows(使用IOCP),Linux(epoll)和Mac(kqueue)上工作。 相对较小的内核,具有比较稳定的API。 通过NPM … 继续阅读

发表在 Memo | |
w3cmm

JavaScript modules

现在,所有主流浏览器都支持JavaScript modules! 本文介绍了如何使用JS modules,如何负责任地部署它们以及Chrome团队如何努力使modules在将来变得更好。 什么是JS模块? JS模块(也称为“ES模块”或“ECMAScript模块”)是一项主要的新功能,或者是新功能的集合。 您过去可能使用过userland JavaScript模块系统。 也许您在Node.js中使用过CommonJS,或者在AMD中使用过,或者在其他方面使用过。 所有这些模块系统都有一个共同点: … 继续阅读

发表在 JavaScript |
w3cmm

使用Lighthouse审查网络应用质量

Lighthouse 是一个开源的自动化工具,用于改进网络应用的质量。 您可以将其作为一个 Chrome 扩展程序运行,或从命令行运行。 您为 Lighthouse 提供一个您要审查的网址,它将针对此页面运行一连串的测试,然后生成一个有关页面性能的报告。 从此处,您可以失败的测试为指示器,看看可以采取哪些措施来改进您的应用。  Lighthouse 目前非常关注 Progressive Web App 功能,如“添加到主屏幕”和离线支持。不过,此项目的首要目标是针对网络应用质量的各个方面提供端到 … 继续阅读

发表在 Memo |
w3cmm

语义版本控制

语义版本控制指示哪种更改会导致版本号增加。 Semver使用由三部分组成的版本号,例如3.9.2,并将这三个数字从左到右分别称为主要,次要和补丁号。 3 . 9 . 2 major minor patch 模块维护者进行更改的基本合同是 向后不兼容的更改将增加主数字 向后兼容的新功能会增加次设备号 对现有功能的简单错误修复会增加补丁号 对于任何依赖性,版本1.0.0被视为第一个稳定版本,并且semver合同不适用于该版本之前的版本。 并非每个模块都遵循语义版本控制。模块可以使用由三部分组成的版本 … 继续阅读

发表在 Memo |
w3cmm

package.json中~和^之间的区别

如果你在在安装新packages,并更新package.json作为副作用。仔细观察,您会发现版本号前面有一些特殊符号。 “dependencies”: { “lodash”: “^3.9.2” } 语义版本控制介绍 前缀字符(^)与称为语义版本化或semver的版本编号方案有关。 语义版本控制指示哪种更改会导致版本号增加。 Semver使用由三部分组成的版本号,例如3.9.2,并将这三个数字从左到右分别称为主要,次要和补丁号。 3 . 9 . 2 major minor patch 在没有no … 继续阅读

发表在 Memo | |
w3cmm

#!/usr/bin/env node 是什么?

#!/usr/bin/env node是shebang line的一个实例:用在Unix-like的平台上的可执行纯文本文件中的第一行,它通过#!前缀(称为shebang)命令行告诉系统哪个解释器将该文件传递给执行程序。 Windows不支持shebang lines,因此实际上它们被忽略。 在Windows上,它只是给定文件的文件扩展名,它确定哪种可执行文件将对其进行解释。 但是,您仍然需要在npm上下文中使用它们。[1] 下面是仅限于类Unix平台对shebang line的一般讨论: 在下 … 继续阅读

发表在 Memo | |