首页
学习
活动
专区
圈层
工具
发布

2021 最 Top 的编程语言是 Python,而不是 JavaScript?

近日,IEEE Spectrum 发布了 2021 年度编程语言排行榜,其综合排行榜显示,前五名依次是 Python、Java、C、C++ 和 JavaScript。...这与前阵子 Stack Overflow 的报告结果有所不同,Stack Overflow 全球开发者调查报告给出的排名显示,最流行、使用率最高的是 JavaScript(65%),其次是 Python...Redmonk 也将 JavaScript 排在首位,JetBrains 的开发者生态系统调查中 JavaScript 也位居榜首。...比如从工作需求出发: 工作中需求最大的编程语言 在开源社区最受欢迎的排名中,Python 依然位列第一,而 2020 年排名前 10 中的 Arduino 被 C# 所取代。...此外,开发者对分布式系统的兴趣也在持续增长,而 C# 正是为此而设计的。

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入理解 TypeScript 模块

    由此可见模块的功能是很重要的。 早期 JavaScript 并没有模块的概念,当 Node.js 被推出之后,JavaScript 才逐渐引入了模块的概念,而 TypeScript 也沿用这个概念。...如何创建模块 ---- JavaScript 的模块是自声明的,事实上我们在写代码的时候一直在不知不觉中以模块的形式进行书写。 4....,所以导入默认模块就是用“任意变量名”来接默认模块,如下: import 任意变量名 from "....,TypeScript 会优先选择 .ts 文件而不是 .d.ts 文件 非相对路径 非相对模块的导入,编译器则会从包含导入文件的目录开始依次向上级目录遍历,尝试定位匹配的声明文件。...涉及到下面两个配置项: baseUrl:解析非相对模块的根地址,默认是当前目录 paths:路径映射别名,相对于baseUrl 比如我们项目中的基础模块,由于和业务模块是独立的,如果使用相对路径进行引用

    2.9K30

    Webpack 性能系列三:提升编译性能

    二、缩小资源搜索范围 Webpack 默认提供了一套同时兼容 CMD、AMD、ESM 等模块化方案的资源搜索规则 —— enhanced-resolve,它能将各种模块导入语句准确定位到模块对应的物理资源路径...定位到对应包体文件路径 node_modules/lodash/index.js ; import '..../a' 这类不带文件后缀名的语句则可能被定位到 ./a.js 文件; import '``@/a' 这类化名路径的引用则可能被定位到 $PROJECT_ROOT/src/a.js 文件。...与 resolve.extensions 类似,resolve.mainFiles 配置项用于定义文件夹默认文件名,例如对于 import '....watchOptions: { ignored: /node_modules/ }, }; 六、跳过 TS 类型检查 JavaScript 本身是一门弱类型语言,这在多人协作项目中经常会引起一些不必要的类型错误

    1.6K20

    CommonJS 和 ES6 Module 究竟有什么区别?

    ,如果不是则为模块绝对路径 exports: {}, // 模块最终 exports filename: '/absolute/path/to/entry.js', // 当前模块的绝对路径...首先,在创建模块对象时,会有 paths 属性,其值是由当前文件路径计算得到的,从当前目录一直到系统根目录的 node_modules。可以在模块中打印 module.paths 看看。...,最终运行 foo module 时,require('quux') 的查找路径是 lib/bar/node_moduels/quux 而不是 lib/foo/node_moduels/quux。...虽说是同步阻塞性,但这一步实际上非常快,和浏览器上阻塞性下载、解析、执行 js 文件不是一个级别,硬盘上读文件比网络请求快得多。 ?...import 另一个模块没有 export 的变量,在代码执行前就会报错,而 CommonJS 是在模块运行时才报错。 为什么平时开发可以混写?

    2.1K10

    一些你需要掌握的 tsconfig.json 常用配置项

    /src,我们使用绝对路径时就能去掉重复的前缀,将路径写短一些: import { Login } from "features/user/login"; 相对路径不需要 baseUrl,因为它是相对于当前文件路径计算的...如果你不设置 baseUrl,模块文件 import 需要使用相对路径,或绝对路径(不是针对项目根目录的绝对路径,而是完整的路径)。...这里的 @ 并不是必须的,这样写只是表明这个路径是一个重映射,或者叫别名,实际上文件系统上不存在对应的真实目录。...这样,原来比较冗长的路径: import LibA from "other/_lib/lib_a"; 就可以改为: import LibA from "@lib/lib_a"; declaration...types 配置 可指定只使用哪些全局类型声明,而不是 node_modules/@types 下所有的类型声明。

    2K10

    这些前端新技术你很难再忽视了 —— pnpm

    What 什么是 pnpm? 答:简单理解 pnpm 就是 npm、yarn 的同类竞争对手,是一款现代包管理器。 Why 那为什么要选 pnpm ,而不是 npm 或 yarn 呢?...例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则 pnpm update 只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件...所有文件都保存在硬盘上的统一的位置。当安装软件包时,其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。 这让你可以在项目之间方便地共享相同版本的依赖包。...看官网 https://github.com/pnpm/benchmarks-of-javascript-package-managers 生图直出: 可以看到,在多数场景下,pnpm 包安装的速度都是明显优于...这样会有几个问题:幽灵依赖、不确定性、依赖分身,我们逐个解析~ 幽灵依赖 幽灵依赖的定义是:子依赖提升造成的,虽然不会出现在package.json中(声明缺失),但是仍可以在项目中正常被 import

    1.5K20

    深度阐述Nodejs模块机制

    4、载入node_modules里的模块如果模块名不是路径,也不是内置模块,Node将试图去当前目录的node_modules文件夹里搜索。...优先从缓存加载和浏览器会缓存静态js文件一样,Node也会对引入的模块进行缓存,不同的是,浏览器仅仅缓存文件,而nodejs缓存的是编译和执行后的对象(缓存内存) require()对相同模块的二次加载一律采用缓存优先的方式..._cache = {};3 import和require简单的说一下import和require的本质区别import是ES6的模块规范,require是commonjs的模块规范,详细的用法我不介绍,...我只想说一下他们最基本的区别,import是静态(编译时)加载模块,require(运行时)是动态加载,那么静态加载和动态加载的区别是什么呢?...,需要把obj对象整个加载进内存,之后用到哪个变量就用哪个,这里再对比一下import,import是静态加载,如果只引入了name,age是不会引入的,所以是按需引入,性能更好一点。

    75020

    Module 的加载实现

    -- 外部脚本 --> javascript" src="path/to/myModule.js"> 上面代码中,由于浏览器脚本的默认语言是...默认情况下,浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到标签就会停下来,等到执行完脚本,再继续向下渲染。如果是外部脚本,还必须加入脚本下载的时间。...; 对于外部的模块脚本(上例是foo.js),有几点需要注意。 代码是在模块作用域之中运行,而不是在全局作用域运行。模块内部的顶层变量,外部不可见。...模块之中,顶层的this关键字返回undefined,而不是指向window。也就是说,在模块顶层使用this关键字,是无意义的。 同一个模块如果加载多次,将只执行一次。 下面是一个示例模块。...另外,由于 CommonJS 模块遇到循环加载时,返回的是当前已经执行的部分的值,而不是代码全部执行后的值,两者可能会有差异。所以,输入变量的时候,必须非常小心。

    1.3K20

    Deno会在短期内取代Node吗?

    两年后的5月13日, Deno 1.0终于正式发布了,它是一个全新的服务端JavaScript运行时,使用Rust而不是C++开发,由于Rust原生支持WebAssembly,所以它也能直接运行WebAssembly...虽然默认情况下Deno会处理很多事情,但您可以使用自己的tsconfig.json文件覆盖配置: deno run -c tsconfig.json [your-script.ts] 默认配置使用的是严格模式...放弃NPM和node_modules Deno决定完全放弃NPM和node_modules, 因为npm逻辑越来越复杂,node.js对外部模块几乎没有任何安全验证措施,另外node_modules也越来越臃肿且难以管理...它是通过url加载所有模块的: import * as log from "https://deno.land/std/log/mod.ts"; 所以,Deno不再需要拥有一个集中的存储库,之前的package.json...另外,虽然没有了node_modeules目录,但依赖项仍然会下载并隐藏在你的硬盘中,供你离线使用,如通过需要重新下载,只需在命令中添加—reload命令即可。 还有什么?

    91730

    JavaScript生态加速攻略:模块解析

    值得注意的是,我们忽略了某些错误情况,并返回 false 而不是转发错误。 ENOENT 和 ENOTDIR 错误代码最终意味着磁盘上不存在该路径。也许这就是我们看到的开销?...模块化还是非模块化,这是个问题 默认情况下,工具需要了解三种类型的限定符: 相对模块导入: ./foo , .....这意味着,如果在其他地方的文件中导入 foo ,我们将再次向上爬整个目录树,直到找到包含模块的 node_modules 目录。这是缓存已解析模块的方面,极大地有所帮助。 但这还不是最好的!...如果我在 /Users/marvinh/my-project/src/features/ 的features目录中添加路径映射,以便我可以使用像 import {...} from “features/...模块加载和解析的实际规范是在多年后最终确定的,通过强制要求扩展名来纠正了这个错误。 // 无效的ESM,导入说明符中缺少扩展名 import { doSomething } from ".

    1K40

    AngularJS7那些不得不说的事故

    但在中、小型公司,这是个很烦心的问题。我建议对于一些复杂的项目,尽可能的保留下来原有的node_modules 文件夹,毕竟跟硬盘容量比起来,这一点空间不算啥了,能让你将来项目的维护轻松许多。   .../node_modules/xxxx这样的路径,因为AngularJS7和4的默认路径是不同的。   第三步是为bootstrap这样的UI库添加额外的css,这个比较容易。...直接在默认的主css文件:src/styles.css增加额外的引用就可以了,比如: @import "~bootstrap/dist/css/bootstrap.css"; @import "~bootstrap-switch...引用时候的路径,使用当前typescript文件的相对路径就可以。比如: import { Lists } from '.....而通常的开发工具链是使用babel编译,而后者的编译结果,从向前兼容上,显然做的更好一些。

    1.9K10

    谈谈webpack

    output.filename配置输出文件的名称,为string类型。 output.path配置输出文件存放在本地的目录(路径),必须是string类型的绝对路径。...默认为空字符串'',即使用相对路径。 比如需要将构建的资源上传到CDN服务上,以便加快网页的打开速度。...Webpack内置Javascript模块化语法解析功能,默认会采用模块化标准里面约定好的规则去寻找,你也可以按照需求修改默认规则。...resolve.modules的默认值是['node_modules'],含义是先去当前的目录下./node_modules目录下去找想找的模块,以此类推,如果没有找到就去上一级目录.....node_modules')] } } 优化resolve.alias配置 resolve.alias配置项通过别名来把原导入路径映射成一个新的导入路径。

    1K30

    🧭 React Native 版本升级指南

    尤其是遇到大版本更新,JavaScript、iOS 和 Android 三端的配置构建文件都有非常大的变动,有时候三者的配置文件又互相耦合在一起,往往牵一发而动全身。...本文假定 React Native 升级的主导者是前端同学,比较熟悉 javaScript 为主的一套前端构建流程。...如果你认为我只是单纯的批评前端那你就理解错了,我想表达的是,这么复杂的配置都能搞定,iOS Android 的项目配置还不是手到擒来? 2....2️⃣ 引用路径改动 更新后有些方法和组件的引用路径发生了变更,需要我们适配一下: 1.ErrorUtils 默认绑定到 global 上,不需要 import ErrorUtils from ErrorUtils...2️⃣ LogBox 开启 LogBox 这个功能在 0.62 里是默认关闭的,0.63 版本默认开启。

    5.4K20

    node.js笔记

    使用的是 CommonJS 标准,CommonJS 模块是为 Nodejs 打包 JavaScript 代码的原始方式,Nodejs 还支持浏览器和其他 JavaScript 运行时使用的 ECMAScript...2)导入:import 变量名 from '模块名或路径' 2、注意:Node.js 默认支持 CommonJS 标准语法 3、如需使用 ECMAScript 标准语法,在运行模块所在文件夹新建...默认 index.js 文件,或者 main 属性指定的文件 10、npm - 软件包管理器 npm 是 Node.js 标准的软件包管理器 在 2017 年 1 月时,npm 仓库中就已有超过...它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端JavaScript 中使用的工具。...命令,检测代码更改,自动重启程序【总的来说,之前的node ‘文件路径’ 启动服务,只执行一次,而 nodemon 却开启后一直检测,代码改变保存后,编译一次,同时终端输出】 3、使用:

    36710

    深入浅出 Vite5 中依赖预构建

    这个问题其实和这篇文章关系并不是很大,本篇文章中着重点更多是和让大家了解预构建是在做什么以及是怎么实现的过程。...) { // 如果是 / 开头的绝对路径,同时前缀并不是在该项目(root) 中,那么 vite 会将该路径当作绝对的 url 来处理(拼接项目所在前缀) // /foo ->...", }, }, } 需要注意的是,我们在内存中存储的 optimize 全部为绝对路径,而写入硬盘时的路径全部为相对路径。...之后同样我们使用 Esbuild 再次对应项目中的所有第三方依赖进行构建打包。不过不同的是这一步我们标记 write:true 是需要将构建后的文件写入硬盘中的。...pnpm/react@18.2.0/node_modules/react/index.js" 的值,这是由于安装依赖时我使用的是 pnpm ,而Vite 中对于 Symbolic link 有处理,而我们上边的代码比较简易并没有处理

    1.3K21

    使用Skypack在浏览器上直接导入ES模块

    ,而Skypack是专门为现代浏览器设计的,它会自动帮我们进行转换,我们只要告诉它我们要导入的包名,即使这个包提供的是commonjs版本的文件,Skypack返回的也会是ES模块,所以我们就可以直接在浏览器上以模块的方式导入了...,Skypack会返回包主入口点指定的文件,也就是package.json的main字段或module字段对应的文件,但是有时候这可能并不是我们需要的,以vue@2为例: 可以看到页面输出是一片空白,...也支持让我们导入指定的文件: import Vue from 'https://cdn.skypack.dev/vue@2.6.11/dist/vue.esm.browser.js' 在包名后面拼接上路径即可...: 以这种方式虽然可以加载到我们指定的文件,但是有一个很大的限制,就是如果要加载的文件不是ES模块,比如是commonjs模块,那么Skypack是不会自动对文件进行转换的,只有以按包名称(主入口)使用时才会进行处理...,当导入指定路径时我们就不进行commonjs检测了,直接默认为ES模块: router.get("/(.*)", async (ctx, next) => { let urlArr = ctx.url.slice

    1.9K10

    Vite 原理浅析及应用

    类似 Webpack 进行热更新时,会将你的所有文件重新打包一次,来实现热更新,而 vite 是只重载你更改的那个文件,通过 HTTP 来重新发送请求即可实现,所以是快速的。...而 Vite 的方式是直接先启动服务器,其实图上少了一个步骤,在启动服务器之前会先读取你的 package.json 文件,识别出需要进行预编译的包,先进行预编译之后,再去启动服务器。...由于 ESM 只能接受 Content-Type 为 text/javascript 类型,所以只能通过 JS 的方式去插入到 index.html 中 简单处理 svg 图片 由于 css 和图片并不是要展示的内容...这个是 Vite 默认就不支持的问题,所以这里会有切合业务的两个问题: 需要将所有的文件类型改写成 JSX or TSX 项目模块过多,组件更多,一个个改不现实 解决方案 在 Vite 仓库下看到的一个...但是通过后端修改的话,成本太高,而且后端不会为了前端一些更改去将整个系统的路径都改一遍,可能会引发未知的问题等。而且其目的是前端提效,并不是在项目上或者收益上有所关联。

    1.9K40
    领券