Comments 14
очень напрягают импорты прям из интернетов
Ну почему ни одна статья про Deno не обходится без набросов на Node.js, причем необоснованных:
В Node.js es модули появились только в конце 2019 года, с версией 13.2.0, но даже тогда, поддержка осталась незрелая и она по-прежнему включена спорным расширением .mjs.
Незрелая – все познается в сравнении. Поддержку модулей уже вывели из-под флага даже для 12.x версии. Прогресс очевидно идет
Спорное расширение mjs. Если покопаться в этой теме, то станет понятно почему они так сделали (обратная совместимость прежде всего). Более того, для желающих есть возможность заставить работать модули и с js расширением тоже.
В случае с expressjs то нет, потому как она как раз использует http и прочее.
Но, Deno все таки сделает поддержку стандартной библиотеки NodeJs, но только на ранней стадии.
Список совместимости, и то что уже реализовали тут:
github.com/denoland/deno/tree/master/std/node
API мало того что почти никак не совместимы, Deno из коробки ещё и не предоставляет API, которое в NodeJS есть из коробки.
Как успел уже заметить Ryan Dahl, не использование расширений при require, было ошибкой N1 при проектировании Node.js.
а индекс файлы? разрешено ли это:
import { assert } from "https://deno.land/std/testing"
где в
"https://deno.land/std/testing"
лежит "index.ts"
Все, что работает в Deno, по умолчанию работает также, как и в браузере, и Deno c самого начала это пытается обеспечить, чтобы не было странных болячек у пользователей Deno. Что я имею в виду:
reverse=a=>a.sort(n=>1)
reverse([1,2,3])
- node (10.13.0): [3,2,1]
- deno (0.4.0) [1,2,3]
- chrome (74.0) [1,2,3]
- other browsers: [1,2,3]
На самом деле тут дело в движке V8 в котором поправили сортировку. Изменение конечно же попало в более новые версии NodeJS v11 и v12.
V8 пользуется и в Deno, и в Node. Непонятно в чем здесь именно заслуга Deno.
Открытым остаётся вопрос какой вообще смысл в вызове метода .sort
с параметром n => 1
Чтобы показать какой node.js не очень, очевидно же.
А если серьезно, грабли обычно возникают, когда в массиве встречаются null и undefined, и приведение типов приводит к неожиданным результатам:
[null, 1, undefined].sort((a,b) => a < b)
// node 10.20.1
[1, null, undefined]
// node 12.16.3
[null, 1, undefined]
Больше нет package.json, теперь принято использовать deps.ts
Но ведь и в package.json для Node.js можно написать пути до git-репозиториев с указанием ветки/теги/коммита, а не название пакета в централизованном хранилище.
Deno v1.0: Безопасная среда выполнения для JavaScript и TypeScript. Обзор возможностей