TML 教程导读- (HTML5 标准):
HTML也叫作超文本标记语言,标准通用标记语言下的一个应用,您可以使用 HTML 来建立自己的 WEB 站点。通过学习本教程,您将可以使用 HTML 来创建站点。HTML 是非常容易学习的!相信您能很快学会它!
HTML发展史:
HTML没有1.0,因为关于它的初版存在争议,1995年HTML 2.0面世,1997年由国际官方组织W3C推出了HTML 3.2以及HTML 4.0标准,后面W3C(万维网联盟)也渐渐变成Web技术领域的权威,经过漫长的演变,2014年,HTML 5标准最终面世。
HTML 2.0——1995年11月,RFC 1866发布
HTML 3.2——1997年1月14日,W3C发布推荐标准
HTML 4.0——1997年12月18日,W3C发布推荐标准
HTML 4.01——1999年12月24日,W3C发布推荐标准
HTML 5——2014年10月28日,W3C发布推荐标准
HTML 实例:
在本教程中的每个章节中都会提供一定量的实例,使用编辑器,运行并修改这些实例,您可以深入掌握 HTML!
实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test00-html课程导读实例</title>
</head>
<body>
<h1>这是一个标题</h1>
<p>这是一个段落。</p>
</body>
</html>
使用HBuilderX创建一个项目:
我是一名前端开发程序员,自己整理了一份2019最全面前端学习资料,从最基础的HTML+CSS+JS到移动端HTML5到各种框架都有整理,送给每一位前端小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴
前端资料获取方式:
1.在你手机的右上角有【关注】选项,点击关注!
2.关注后,手机客户端点击我的主页面,右上角有私信,请私信回复:【学习】
电脑已经设置好了关键词自动回复,所以回复的时候请注意关键词哟~
程语言正在不断演化,但预测 5 年后会如何则很有难度,作者给出了一个答案。
作者 | Timothy Mugayi
译者 | 明明如月,责编 | 唐小引
封图 | CSDN 付费下载自 VCG
出品 | CSDN(ID:CSDNnews)
在这篇文章中,我们将看到一个我自己手动排行的编程语言和框架的列表,我相信这些语言和框架在未来 5 到 10 年内仍然坚挺。我不希望这个编程语言列表带有太多偏见。确定这个名单非常困难,因为每个人都会有些许偏见。当我草草记下我的想法时,我在思考随着时间推移编程的范式和创新是否符合演变。2020 年后,更快,更易用,更实用,更抽象的抽象技术变得流行。在此精选列表是基于我对技术的趋势、工作机会、使用情况、范例、基于流行性的统计以及未来的技术创新来预测的。
在科技界一年就像一生,因此在未来 5 年内可能会发生很多变化,但我相信这份精心策划的清单仍然很重要。如果您刚开始学习如何编程,不知道该选择哪种语言或框架,那么这份精选清单则可以帮到你。
回顾
当我们踏入 2020 年,回顾过去 5 年,很多事情都发生了改变。如区块链、深度学习、量子计算等新技术开始出现。对于那些刚刚开始学习编程甚至是经验丰富的开发人员来说,为了在这个不断变化的领域中保持与时俱进,思考自己在目前的发展状况大有裨益。现在就是学习新技术的最好时机。
为什么确保你选择和学习正确的语言或框架很重要?
学习一门新的语言和框架对你来说是一种投资,你花的金钱和时间有去无回。 技术总是在不断变化,随着年龄的增长,保持与时俱进的需求变得越来越重要。选择正确的语言和框架可能会改变你的一生,可能会彻底改变你做工作的方式和发展轨迹。因此你肯定想选择一个近几年不会过时的编程语言。
Rust
Rust 是一种系统编程语言,旨在取代 C 和 C++ 开发。Rust 提供了和 C 和 C++ 匹敌的性能,但是使用起来更加友好。对于那些已经在 c / C++ 中编写了很长时间的程序的人来说,他们非常喜欢听到这样的话。
已经有相当多的新开发者涉足这个领域。Rust 拥有不断增长的用户群。有数百家公司使用 Rust 进行开发,比如 Dropbox、 Yelp 和 Cloudflare。亚马逊最近宣布的虚拟化技术 Firecracker 这种产品也使用的是 Rust 的。在 StackOverflow 的 2016 年开发者调查中,Rust 也被评为“最受欢迎”的技术 (这意味着更多的用户会坚持使用 Rust)。
尽管与那些已经问世几十年的其他编程语言相比,它还是相对比较年轻,但它拥有大量可用的库,可以用来加速开发。你可以在 crates.io 或 GitHub 上找到你需要大多数的东西。
Rust 的主要特征
Rust 的主要特征是运行速度快和内存利用率高。它没有运行时或垃圾收集器,它适合用在对性能要求高的关键的服务,它可以在嵌入式设备上运行,并且很容易与其他语言集成。在接下来的 5 年和 10 年里,随着我们遇到硬件编程语言的限制,这些语言的速度更快,占用的内存更少,提高了速度和响应能力,使我们能够更省力的编写代码,这类语言将变得更加重要。
可靠性:Rust 丰富的类型系统和所有权模型保证了内存和线程的安全,并能够在编译时消除许多错误。
生产力:Rust 有很好的文档,提供了一个非常友好的编译器,错误信息提示非常友好。C,C++ 代码的编译器提示消息则是出了名的难以理解。Rust 的编译器则更好。如果你想学习系统编程,使用“ rustc”编译器做可以让你不用担心内存安全而能够专注其他的事情。
正如一位著名的程序员曾经说过:Pascal 就像穿着紧身衣,C 就像在玩刀,而 C++ 就像在玩弄燃烧的电锯。在这个比喻中,Rust 就像是穿着保护装备悬挂在绳子上做跑酷运动。是的,这看起来有点可笑,但是你可以用它做各种很酷的动作而不伤害自己。
Python
在过去的几年里,Python 的流行度一直在稳步上升,尤其是在过去的 10 年里,最终迈进了 TIOBE 指数的前 5 名。
Python 非常实用。对于初学者来说,它是一个脚本语言,这意味着入门非常快,不像 java 还需要编译。它的本质是面向对象的语言。在大学的许多学术课程中,Python 已经取代 Java 成为默认的首选编程语言。对于初学者来说,安装 Python 解释器并运行非常容易。
$ print (‘hello world this is my. First program’)如上述代码所示,你的第一个程序就这样用 Python 写完了。
Python 正在为未来铺平道路。它在未来 5 年乃至更长的时间段内都将具有较大影响力。Python 已经让机器学习、深度学习、人工智能、大数据等所有流行的数据科学流行语等新的技术范式成为可能。互联网上有大量成熟的库,如 TensorFlow、 Scikit-Learn、 Dask for distributed Data Science 大规模可扩展计算, Python 也可以用于量子计算。虽然我们离量子计算还相对较远,但是 Python 是一个可以确保你作为一个量子程序员的地位的语言。
Python 在企业和初创企业中都很受欢迎。在过去 5 年中已经取得了巨大的进展。现在一些使用广泛的平台,比如 Reddit和许多 Google 库都是建立在 python 之上的。
我个人使用 Python 编写脚本并快速自动化许多任务。它一直是一种让自由职业者快速完成项目的不可多得的语言。
Python 提供了可以访问网络框架,比如 Django 框架,它是构建前端和后端网络应用的最好的 Python 框架之一。坚持 DRY 原则快速构建应用程序的哲学,需要很少的代码量和需要很少的编程经验。
Ruby
Ruby 是另一个功能强大的高级语言,它可以让你轻松地构建应用程序。作为面向对象程序设计语言,对于那些有 Python 开发经验的人来说,Ruby 语法看起来与 Python 非常相似。该语言还配备了构建复杂应用程序所需的所有工具。
许多硅谷的初创公司都是建立在 Ruby 之上的,比如 Airbnb、 Twitch、 GitHub 和 Twitter。Ruby on Rails 是一个运行 Ruby 的全堆栈 Web 应用程序框架,这让 Ruby 更加流行。
Ruby 的一些关键特性:
提供了一个健壮的高质量库。
语法简单,有助于快速开发原型。
学习门槛低,新程序员很容易上手。
是一种面向对象程序设计语言,所以你可以拥有一切面向对象语言的优势。
由于 Rust 的内存占用很小,可用于构建分布式在线服务或网络服务。
Golang
Go(Golang)是 Google 开发的一种相对较新的编程语言。它最近越来越受欢迎。 提供了极好的多线程支持,因此,许多严重依赖分布式系统的公司都正在使用它。它是为解决谷歌面临的一些棘手问题而设计的。谷歌还将 Go 作为新项目的主要语言,并用 Go 取代其他语言。因为谷歌与我们的日常生活息息相关,所以我们不可能忽视它,认为它在可预见的未来将继续保持活跃。
我必须承认,它是一门非常优雅的编程语言,语法很简洁。它在动态类型语言、解释性语言的易用性和类型安全、内存安全之间取得了平衡。
主要功能:
由于有内在并发支持,它可以有效提高 CPU 利用率。擅长云系统开发,分布式系统,微服务。
轻量级、执行速度快和开发效率高。
内存占用和二进制文件较小。
自动垃圾收集。
无异常,它自己处理错误, 等。是的,你没看错。这对你来说意味着什么?您必须准确地知道如何自己处理这些错误,而不是抛出一堆 try-catch 异常。仔细想想是不是这样?
有趣的事实:
全球 Go 语言开发人员平均年薪: 109,483 美元。在美国,这种顶级编程语言的平均年薪为13.6 万美元。
在 2019 年 Stack Overflow 开发者调查中,Go 是全球排名第三的高薪语言。
GitHub 上第四活跃的编程语言。
GraphQL
与今天相比,以前的 Web API 设计相对简单,有用于从服务器检索数据的 REST 表示状态转移标准,该标准是基于URL来访问数据的。
然而,需求增长超过了标准。数据不再是之前静态的样子了,它更加动态,因此 GraphQL 应运而生。GraphQL 是 REST 架构的替代方案,旨在克服REST的缺点。与 REST 不同,GraphQL 允许脱离固定数据结构方式来请求客户机需要的特定数据。在后端,GraphQL 向 API 指定如何向客户端显示数据。GraphQL 通过 API 重新定义了开发人员的工作,这些 API 为市场提供了更多的灵活性和速度;它改善了客户机与服务器之间的交互,使前者能够进行精确的数据请求,准确的获得他们所需要的东西。
最初由 Facebook 在 2012 年创建,GraphQL 内部用在他们的移动应用程序,通过其特定的数据获取功能来减少网络使用。从那时起,GraphQL 规范开源了。现在主要的编程语言如 Python,Java,c # ,Node.js 等都支持它。
由于其生态系统的快速扩张,这使得它成为在可预见的未来继续坚挺的技术之一。它有丰富的扩展库和功能强大的工具,如 Apollo、 GraphiQL 和 GraphQL Explorer。
GraphQL 的一些关键特性:
查询速度更快,选择查询的字段减少请求。
非常适合复杂系统和微服务。通过其 API 集成多个系统。
GraphQL 可以将来自多个地方的数据聚合成单个 API。
不存在过多或过少抓取的问题。众所周知,REST 响应要么包含过多的数据,要么包含的数据不够。
验证和开箱即用的类型检查。
自动生成 API 文档可取代 Swagger,并且在 GitHub 问题中可以找到使用规范。
无版本的 API 演进,这是 REST 的一个常见问题随着 API 演进,你不得不创建一个新的 API 或者在 URL 前面加上版本,并且有无可挑剔的文档。通过使用 GraphQL,你可以得到一个单一的、不断发展的版本,这使你的应用程序可以不断地访问新特性,并且鼓励编写更简洁、更易维护的服务器代码。
GraphQL 并不是试图取代 REST,它们是解决不同类型问题的两个不同的东西。随着我们迈向大数据,投入一些时间学习 Graphql 就非常有必要。
Angular
Angular 由 Google 开发的,一种用于软件开发的成熟的 TypeScript 框架。它是构建 web 和移动应用程序的主要开源框架之一。Angular 是一个完全基于 AngularJS 改写的。从 AngularJS 开始,它在刚开始的时候就具有一定的影响力,现在 Angular 经过多年的发展,它已经发展成为一个全面的开发框架,其中包括了构建网络和移动应用所需的所有工具和组件。这个框架的美妙之处在于它遵循着一个清晰的路线图,每六个月发布一个新的 Angular 主版本,如果你想长期使用 Angular 的话,这点很重要。
Angular 的主要特征:
下面只讨论 Angular 9 中提到的特性,这些特性可能会解决性能问题。
Google 为这个框架提供了长期的支持,并不断地改进它。定期改进非常受追捧,这表明这个框架有一个充满活力。因此,鉴于谷歌正在支持它并对其进行投资,表明该框架在可预见的未来仍将具有相关性。
Angular 9 的另一个关键特性是通过 Ivy Compiler 减少了大包文件,从而占用了很小的空间 —— 试图通过减少 JavaScript 包的大小,Ivy 加快应用程序启动。
为需要支持多种语言的应用程序提供更好的国际化支持。
JavaScript
我斗胆说一句:JavaScript 是一个不可替代的语言,毫无疑问它将在未来的几年里继续存在。因此,投资学习这门语言非常划算。它不仅仅是一个客户端的开发脚本语言,通过像 Node JS,Angular 和 React 这样的框架和库,你还可以在服务器端使用 JavaScript 来开发用户界面。
JavaScript 是所有大型科技公司的核心,比如 Netflix,Facebook,Google 等等。因此,JavaScript 作为一种语言和其他编程语言一样都具有合法地位。2020 年是开始投资的一年。把你的空闲时间投入到学习 JavaScript 上来吧。
现在想一想,几乎所有的网站都在某种程度上使用了 JavaScript。
荣誉奖
Webassembly ( 缩写为 Wasm) 应该获取荣誉奖,但不能成为前 7 名,因为它既不是框架也不是编程语言。
Wasm 被设计为编程语言的编译目标和二进制格式,其目标是为 web 应用程序提供接近本机的性能。这意味着什么?把它想象成一个公共的中央平台,开发人员可以将各种编程语言编译成 web 汇编,然后在这个平台上运行它们。另一个类比是它是所有编程语言的 Java 虚拟机。
从本质上讲,每当您在 Internet上通过 Web 浏览器运行应用程序时,Wasm 都将目标定为 Web 应用程序的近乎本机的性能,在接下来的 5 年中,大多数情况都需要用到 Wasm。想想那些需要完美表现的网络游戏吧。通过点击一个按钮,你就可以从服务器下载应用程序代码,并将其加载到运行 Wasm 的浏览器虚拟机中。Wasm 得到了如 Mozilla,微软,谷歌和苹果等大企业的支持。
这种 Web 汇编的广泛应用鼓励去中心化计算,例如 Ethereum 正在着手开发 ether 2.0,在本文撰写之时,Ethereum 将利用其新提出的重新设计智能合同执行层的建议,使用 WebAssembly 的确定性子集。在这个巨大的数字化空间里,学习模型正逐渐成为软件开发人员构建、人与应用交互的技术支柱。
Web 汇编可以让 JavaScript 做它擅长的事情,并将它不能做的部分委托给其他语言。可以把它想象成下一代 Web Ajax。Ajax 使客户端应用程序成为可能。Web 汇编允许您超越仅仅使用 JavaScript 进行节点或 JavaScript 可能不擅长的复杂的低级计算。因此,web 汇编的未来看起来是前途一片光明。
总结
如果你仔细想想,所有的编程语言和框架都有能力构建复杂而强大的功能, 都可以构建解决现实世界中紧迫问题的应用程序。没有放之四海而皆准法则,因为每种语言和框架都有其优势和不足,以及有意义或无意义的地方。对语言的需求是由用例、市场需求或使用该专业知识的资源库驱动的。
永远记住,任何编程语言或框架的目标都是完成任务,要选择最适合你的技术。
真正的敏捷适应性和迭代学习才能真正让你在未来几十年保持与时俱进。就我个人而言,作为一个通晓多种语言的开发者,这为我敞开了大门
如果你喜欢这篇文章,那么请与你的朋友和同事分享,如果你认为这些语言在未来 5 年内将不再适用,那么请评论,我也很乐意听到你的声音。
英文:Top 7 Programming Languages & Frameworks To Learn in 2020 That will Still be Relevant In 5+ Years
链接:https://medium.com/swlh/top-7-programming-languages-frameworks-to-learn-in-2020-that-will-still-be-relevant-in-5-years-11245d7e2d56
作者简介:Timothy Mugayi。技术传播者,讲师,多语言开发者,热爱技术创新
译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。
者|Next.js 团队
译者|无明
出处丨前端之巅
在经过 26 次金丝雀发布和 340 万次下载之后,近日,我们正式发布了 Next.js 7.0,新功能包括:
Next.js 的主要目标之一是提供最佳的性能和开发者体验。最新版本为构建和调试管道带来了很多重大改进。
得益于 Webpack 4 和 Babel 7,以及我们对代码库做出的很多改进和优化,Next.js 现在在开发过程中的启动速度提高了 57%。
我们新增了增量编译缓存,让变更代码的构建速度快了 40%。
以下是我们收集的一些示例数据:
因为使用了 webpackbar,在开发和构建的同时可以看到更好的实时反馈:
使用 react-error-overlay 更好地报告错误
准确地渲染错误对于良好的开发和调试体验来说是至关重要的。到目前为止,我们可以渲染错误消息和堆栈跟踪信息。我们在此基础上更进一步,我们使用 react-error-overlay 来丰富堆栈跟踪信息:
这是之前和之后的错误显示比较:
另外,借助 react-error-overlay,你只需单击特定代码块就可以轻松打开文本编辑器。
从发布第一个版本以来,Next.js 一直使用 Webpack 来打包代码和重用丰富的插件。Next.js 现在使用了最新的 Webpack 4,其中包含很多改进和 bug 修复。
另一个新功能是支持 WebAssembly,Next.js 甚至可以进行 WebAssembly 服务器渲染。
这里有一个例子:
https://github.com/zeit/next.js/tree/canary/examples/with-webassembly
因为使用了 Webpack 4,我们引入了一种从捆绑包中提取 CSS 的新方法,这个插件叫作 mini-extract-css-plugin(https://github.com/webpack-contrib/mini-css-extract-plugin)。
mini-extract-css-plugin 提供了 @zeit/next-css、@zeit/next-less、@zeit/next-sass 和 @zeit/next-stylus。
这些 Next.js 插件的新版本解决了与 CSS 导入相关的 20 个问题,例如,现在支持 import() 动态导入 CSS:
// components/my-dynamic-component.js
import './my-dynamic-component.css'
export default () => <h1>My dynamic component</h1>
// pages/index.js
import dynamic from 'next/dynamic'
const MyDynamicComponent = dynamic(import('../components/my-dynamic-component'))
export default () => <div>
<MyDynamicComponent/>
</div>
一个重大改进是现在不再需要在 pages/_document.js 中添加一下内容:
<link rel="stylesheet" href="/_next/static/style.css" />
Next.js 会自动注入这个 CSS 文件。在生产环境中,Next.js 还会自动向 CSS URL 中添加内容哈希,当文件发生变更时,最终用户就不会得到旧文件,并且能够获得不可变的永久缓存。
简而言之,要在 Next.js 项目中支持导入.css 文件,只需要在 next.config.js 中注册 withCSS 插件:
const withCSS = require('@zeit/next-css')
module.exports = withCSS({/* my next config */})
从版本 3 开始,Next.js 就通过 next/dynamic 来支持动态导入。
作为这项技术的早期采用者,我们必须自己编写解决方案来处理 import()。
因此,Next.js 逐渐缺失 Webpack 后来引入的一些功能,包括 import()。
例如,无法手动命名和捆绑某些文件:
import(/* webpackChunkName: 'my-chunk' */ '../lib/my-library')
另一个例子是在 next/dyanmic 模块之外使用 import()。
从 Next.js 7 开始,我们不再直接使用默认的 import(),Next.js 为我们提供了开箱即用的 import() 支持。
这个变更也是完全向后兼容的。使用动态组件非常简单:
import dynamic from 'next/dynamic'
const MyComponent = dynamic(import('../components/my-component'))
export default () => {
return <div>
<MyComponent />
</div>
}
这段代码的作用是为 my-component 创建一个新的 JavaScript 文件,并只在渲染< MyComponent/>时加载它。
最重要的是,如果没有进行渲染,< script>标记就不会出现在初始 HTML 文档中。
为了进一步简化我们的代码库并利用优秀的 React 生态系统,在 Next.js 7 中,我们使用 react-loadable 重写了 next/dynamic 模块。这为动态组件引入了两个很棒的新特性:
Next.js 6 中就已经引入了 Babel 7 测试版。后来 Babel 7 稳定版本发布,现在,Next.js 7 正在使用这个新发布的稳定版 Babel 7。
一些主要特性:
如果你的 Next.js 项目中没有自定义 Babel 配置,那么就不存在重大变更。
但如果你具有自定义 Babel 配置,则必须将相应的自定义插件 / 预设升级到最新版本。
如果你从 Next.js 6 以下的版本升级,可以使用 babel-upgrade 工具。
除了升级到 Babel 7 之外,当 NODE_ENV 被设置为 test 时,Next.js Babel 预设(next/babel)现在默认将 modules 选项设置为 commonjs。
这个配置选项通常是在 Next.js 项目中创建自定义.babelrc 的唯一理由:
{
"env": {
"development": {
"presets": ["next/babel"]
},
"production": {
"presets": ["next/babel"]
},
"test": {
"presets": [["next/babel", { "preset-env": { "modules": "commonjs" } }]]
}
}
}
使用 Next.js 7,这将变成:
{
"presets": ["next/babel"]
}
现在可以删除.babelrc,因为在没有 Babel 配置时,Next.js 将自动使用 next/babel。
Next.js 在预渲染 HTML 时会将页面内容放在< html>、< head>、< body>结构中,并包含页面所需的 JavaScript 文件。
这个初始载荷之前约为 1.62kB。在 Next.js 7 中,我们优化了初始 HTML 载荷,现在为 1.5kB,减少了 7.4%,让页面变得更加精简。
我们主要通过以下几种方式来缩小文件:
在 Next.js 5 中,我们引入了 assetPrefix 支持,让 Next.js 可以自动从某个位置(通常是 CDN)加载资源。如果你的 CDN 支持代理,可以使用这种办法。你可以像这样请求资源:
https://cdn.example.com/_next/static/<buildid>/pages/index.js
通常,CDN 先检查缓存中是否包含这个文件,否则直接从源中请求文件。
不过,某些解决方案需要将目录直接预先上传到 CDN 中。这样做的问题在于 Next.js 的 URL 结构与.next 文件夹中的文件夹结构不匹配。例如我们之前的例子:
https://cdn.example.com/_next/static/<buildid>/pages/index.js // 映射到: .next/page/index.js
在 Next.js 7 中,我们改变了.next 的目录结构,让它与 URL 结构相匹配:
https://cdn.example.com/_next/static/<buildid>/pages/index.js // 映射到: .next/static/<buildid>/pages/index.js
尽管我们建议使用代理类型的 CDN,但新结构也允许不同类型 CDN 的用户将.next 目录上传到 CDN。
我们也引入了 styled-jsx 3,Next.js 的默认 CSS-in-JS 解决方案,现在已经为 React Suspense 做好了准备。
如果一个组件不属于当前组件作用域的一部分,那么该如何设置这个子组件的样式呢?例如,如果你将一个组件包含在父组件中,并只有当它被用在父组件中时才需要特定的样式:
const ChildComponent = () => <div>
<p>some text</p>
</div>
export default () => <div>
<ChildComponent />
<style jsx>{`
p { color: black }
`}</style>
</div>
上面的代码试图选择 p 标签,但其实不起作用,因为 styled-jsx 样式被限定在当前组件,并没有泄漏到子组件中。解决这个问题的一种方法是使用:global 方法,将 p 标记的前缀移除。但这样又引入了一个新问题,即样式泄露到了整个页面中。
在 styled-jsx 3 中,通过引入一个新的 API css.resolve 解决了这个问题,它将为给定的 syled-jsx 字符串生成 className 和< style>标签(styles 属性):
import css from 'styled-jsx/css'
const ChildComponent = ({className}) => <div>
<p className={className}>some text</p>
</div>
const { className, styles } = css.resolve`p { color: black }`
export default () => <div>
<ChildComponent className={className} />
{styles}
</div>
这个新 API 可以将自定义样式传给子组件。
由于这是 styled-jsx 的主要版本,如果你使用了 styles-jsx/css,那么在捆绑包大小方面有一个重大变化。在 styled-jsx 2 中,我们将生成外部样式的“scoped”和“global”版本,即使只使用“scoped”版本,我们也会将“global”版本包含在内。
使用 styled-jsx 3 时,全局样式必须使用 css.global 而不是 css,这样 styled-jsx 才能对包大小进行优化。
App 和 Page 之间的 React Context(服务器端渲染)
从 Next.js 7 开始,我们支持 pages/_app.js 和页面组件之间的 React Context API。
以前,我们无法在服务器端的页面之间使用 React 上下文。原因是 Webpack 保留了内部缓存模块而不是使用 require.cache,我们开发了一个自定义 Webpack 插件来改变这种行为,以便在页面之间共享模块实例。
这样我们不仅可以使用新的 React 上下文,在页面之间共享代码时还能减少 Next.js 的内存占用。
从 Next.js 首次发布以来,就已获得相当多的用户,从财富 500 强公司到个人博客。我们非常高兴看到 Next.js 的采用量一直在增长。
目前,超过 12,500 个被公开索引的域名在使用 Next.js。我们有超过 500 名贡献者,他们至少提交过一次代码。在 GitHub 上,这个项目已经有 29,000 个 star。自首次发布以来,已提交了大约 2200 个拉取请求。
Next.js 社区在 spectrum.chat/next-js 上拥有近 2000 名成员。
英文原文
https://nextjs.org/blog/next-7
*请认真填写需求信息,我们会在24小时内与您取得联系。