当前位置: 首页 > news >正文

北京网站制作费用品牌推广方案范文

北京网站制作费用,品牌推广方案范文,wordpress 站点收录,软件技术一般在哪上班spiderSpider是尝试通过提供更高的可靠性来改进我们的代码的新语言之一。 有些人当然可以将其描述为具有JavaScript语法的CoffeeScript,但这种描述将无法强调Spider的真正优势。 与大多数诸如CoffeeScript之类的替代方案相比,Spider包含了更多独特而有趣…

spider

Spider是尝试通过提供更高的可靠性来改进我们的代码的新语言之一。 有些人当然可以将其描述为具有JavaScript语法的CoffeeScript,但这种描述将无法强调Spider的真正优势。

与大多数诸如CoffeeScript之类的替代方案相比,Spider包含了更多独特而有趣的概念。 虽然后者肯定比Spider更成熟,但通过选择以八足节肢动物命名的语言,我们可以得到一些不错的选择。 如果我们只想尝试另一种语言,或者寻找一种值得信赖JavaScript替代方案,或者尝试减少编写代码并做更多事情,那么Spider似乎是一个不错的选择。

基本概念

Spider是根据其口号设计的, 它只是JavaScript,但更好。 这意味着我们不会获得任何类型的编译类型系统或类型​​检查器。 我们也不会错过我们钟爱的C样式语法,其中大括号用于块,圆括号用于函数调用,方括号用于数组。 最后,我们也没有在JavaScript或其他任何东西之上看到自定义VM,以破坏与现有JavaScript代码的兼容性。 是的,这确实是JavaScript。

Spider的创造者意识到辩论静态语言和动态语言毫无意义。 每个人都有其优点和缺点。 使用Spider选择完全动态方面的原因很简单:JavaScript已经是动态的,并且当语言包含动态类型系统时,与动态代码的交互变得更加简单。

这里还有两件事要提到:

  1. Spider已编译为JavaScript(即已编译)
  2. 某些功能的灵感来自于Go,C#和CoffeeScript等语言

这些文件不会移植到旧版本JavaScript中,而是移植到最新的标准ECMAScript 6中。为了保证大多数浏览器的支持,Spider使用Google的Traceur生成ECMAScript 5兼容文件。 这意味着Spider已经在利用未来的改进,而当前的输出向后兼容。

句法

Spider包含::运算符以访问全局范围。 这样可以防止我们在没有意识到的情况下做一些愚蠢的事情。 但是,这还意味着我们需要编写更多内容来访问,例如, console对象。 下面的语句显示了一个使用::运算符的示例:

::console.log("Hello world!");

解决此问题的一种可能方法是使用use语句。 它使我们可以引用本地未声明的符号。

use console;
console.log("Hello world!");

Spider提供了某些宏,这些宏可以解锁一些众所周知的全局对象。 根据您正在开发的应用程序类型,这些宏或多或少会有用。 下面是一个示例:

use :browser;
console.log(document.title, window.screen);

:browser宏使我们可以直接使用诸如documentconsolewindowlocation等对象。 对于DOM密集型应用程序非常有用的功能。

不是保留所有以前的逻辑运算符,而是替换了一些逻辑运算符。 例如,相等和不相等运算符( ==!= )现在扮演严格相等和严格不相等(JavaScript中的===!== )的角色。 “和”( && )和“或”( || )运算符也可以转换值,并分别重命名为andor 。 这是一个例子:

// x == true;
x = false or 5;
// x == true;
x = 5 and 4;
// x == false;
x = 1 == "1";

现在,有些人会尖叫,停止阅读本文,并关闭页面。 但是,等等……别那么快就离开!

逻辑和和逻辑或运算符还被滥用来控制流和放置默认值。 尽管前者并不那么有趣,但后者可以节省大量时间。 该语言使用null运算符?? 从C#覆盖默认值:

x = options.name ?? 'default name';

此时,我们准备看一下功能。 函数使JavaScript如此有趣。 蜘蛛不会带走任何东西,除了几个字符:

var square = fn (x) {
return x * x;
};

除了编写function ,我们还可以在Spider中编写fn 。 这样可以避免在保持相同结构的情况下键入几次击键。 像在JavaScript中一样,我们可以在函数语句或函数表达式中使用函数。 就像JavaScript中一样,函数语句仅限于命名函数。

另外,我们可以在Java lambda表达式中使用箭头功能-> (类似于JavaScript中的箭头功能)。 前面的示例可以表示如下:

var square = (x) -> x * x;

如果不编写块,该函数将立即返回提供的表达式。 相反,如果您有语句块,则需要使用return语句来返回值。

但是简单的功能箭头是不够的。 与TypeScript语言(以及ECMAScript 6)一样,我们也有胖箭头=>运算符。 这是一个上下文保存功能箭头。 如果您想了解有关JavaScript中箭头功能的更多信息,建议您阅读文章准备ECMAScript 6:新功能语法 。

以下是Spider中此运算符的示例:

fn Animal(name) {
this.name = name;
this.printNameLater = () => {
::setTimeout(() => {
::console.log(this.name);
}, 1000);
};
}

免费学习PHP!

全面介绍PHP和MySQL,从而实现服务器端编程的飞跃。

原价$ 11.95 您的完全免费

功能的另一项说明是能够指定默认参数并使用其余参数的能力,如ECMAScript 6中一样。前者会自动生成代码以检查并修复丢失(即undefined )的参数。 后者类似于变量参数列表。 基本上,它将所有其他未命名参数分组为一个命名数组:

fn format(text, parameters...) {
for parameter, index in parameters
text = text.replace('{' + index + '}', parameter);
return text;
}
format("Hi {0}! My name is {1}.", "World", "Florian");

在前面的示例中,我们还看到了Spider编写循环的优雅方式之一。 我们使用了经典的foreach循环和附加的迭代计数器。 Spider也包含更多此类功能,我们将在下一部分中看到。

特征

Spider通过引入更多的一致性为JavaScript带来了更多安全性。 在类型名称中可以找到更一致的方法的示例。

// "object"
typeof { a: 4 };
// "array"
typeof [1, 2, 3];
// "date"
typeof new Date;
// "number"
typeof new Number(4);
// "string"
typeof new String("abc");
// "boolean"
typeof new Boolean(true);

如您所见,数组和日期的类型与JavaScript不同,并且更接近您(或大多数人)的期望。 存在操作符可以找到另一个安全检查? 。 它将任何表达式转换为对nullundefined的检查。 这可能非常方便:

if game? {
play();
}

还有其他变体,即?. (也称为Elvis运算符)用于调用属性,或?()用于调用函数。 因此,以下内容可能有意义:

game?.play?();

在这里,我们仅在定义了game情况下访问play属性。 如果play不是函数,则不会调用任何东西。

转译

我已经提到过Spider实际上会转换为ECMAScript6。作为积极的副作用,Spider很有前途,并使用了当今可访问JavaScript功能。 但是,以ES6为目标也有一个缺点:我们仍然需要另一个编译器将输出转换为ES5或更低版本,所有现代浏览器(包括旧版本的Internet Explorer)都可以解释该编译器。

对于编译,我们需要Spider编译器。 最好的解决方案是安装npm软件包spider-script :

npm install -g spider-script

这还将安装Traceur,PEG.js和其他一系列依赖项。 使用Traceur的主要缺点是附加的运行时依赖项。

在这一点上,我们有机会获得蜘蛛编译器,这就是所谓spider 。 默认情况下,编译器在不打磁盘的情况下以ES5模式编译和运行代码。 但是,有多个选项可以更改该行为,并使用可选的源映射来写入输出文件。

简短的演示

我不希望您停留在理论上,而是希望您通过创建一个小型演示应用程序来对Spider进行一些练习。 我们的目标是尽可能多地使用Spider的功能。 除此之外,该演示还应该很有趣,因此我们将创建一个简单的游戏。 通过创建此项目,您还可以浏览Spider惊人的继承功能。

基本概念

我们将创建一个简单的太空射击游戏,其中将我们的飞船描绘为三角形,而对手则表示为圆圈。 任何碰撞都将导致玩家的歼灭。 将使用带有2D绘图上下文HTML5画布来绘制游戏。

我们不会专注于图形,因为我们的注意力和兴趣应该集中在代码上。 我们将创建一个名为构造函数GameObject()这也将是prototype的构造函数的PlayerShip()Asteroid() 对象game将聚合game所有对象。

首先,您需要下载一些游戏资源。 我们需要一个漂亮的背景图片,并在发生碰撞时播放声音。 通过键盘上的箭头键控制游戏。

在Spider中实施

每个游戏都需要一种资源加载器。 如果通过网络加载资源,则需求会更高。 以下方法封装了从promise中从给定URL加载图像的过程:

fn loadImage(url) {
return new Promise(fn (fulfill, reject) {
var img = document.createElement('img');
img.src = url;
img.onload = () -> {
fulfill(img);
};
img.onerror = () -> {
reject(img);
};
});
}

有趣的是,我们可以在启动例程中简单地使用它,就像处理经典的顺序代码一样:

background.image = await loadImage('http://i.ytimg.com/vi/qbzFSfWwp-w/maxresdefault.jpg');

background对象是一种特殊的虚拟游戏对象。 构造函数使用GameObject作为其原型:

fn Background(game)
extends GameObject(game) {
this.draw = () => {
if this.image? {
var ctx = this.game.ctx;
var img = this.image;
var w = ctx.canvas.width;
var h = ctx.canvas.height;
ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, -0.5 * w, -0.5 * h, w, h);
}
};
}

我们不需要直接指定prototype 。 我们必须表达我们的基本意图,即用一种更加专门的功能扩展GameObject构造函数。

游戏还包含其他伪对象。 例如,我们可能有一个小行星发生器。 内联循环和范围等功能在这里派上用场。 我们只想在随机时间和随机位置创建一个小行星。

可以在一行中获得三个随机数(此处称为abc ):

fn AsteroidGenerator(game) 
extends GameObject(game) {
this.move = () => {
if Math.random() > 0.95 {
var [a, b, c] = [Math.random() for i in [1..3]];
// ...
game.items <- new Asteroid(game, location, velocity, radius);
}
};
}

最后,我们还将聘请诸如简单的Point构造函数之类的助手。 例如,我们总是可以为任何参数设置默认值。 这将减少仅检查undefined并应用默认值的样板代码:

fn Point(x = 0, y = 0) {
this.x = x;
this.y = y;
// ...
this.dist = (that) => {
return Math.sqrt(Math.pow(this.x - that.x, 2) + Math.pow(this.y - that.y, 2));
};
}

可以在html5.florian-rappl.de/Spider/中查看完成的演示应用程序。 原始源代码可通过GitHub访问 。

关键观察

让我们回顾一下我们在操作中看到的功能:

  • asyncawait解决回调地狱
  • 原型继承变得更简单
  • 速记方法名称使代码更优雅
  • 在许多情况下,范围都很棒
  • 默认值很有用
  • 整体代码更容易阅读

我认为,阅读Spider代码对您而言并不陌生或不陌生。 实际上,事实证明,这似乎是JavaScript的自然扩展,而不是新的语言。

结论

Spider附带了一些方便的新功能,也为表格带来了一定的一致性。 它包含JavaScript的动态性质,而不是与之抗争。 当其他语言尝试通过引入编译时功能来解决错误时,Spider建立在改进的语言规范的基础上。 许多错误肯定会永远消失。

在本文中,我们已经看到了Spider的一些独特卖点。 我们还构建了一个非常小的示例应用程序,它利用了Spider的新功能。 Spider所提供的功能比我在本文中介绍的要多得多。 因此,我建议您查看spiderlang.org上的官方文档。

您对Spider的看法如何? 它是否具有一些吸引人的功能,或者您对当前的工作流程完全满意?

翻译自: https://www.sitepoint.com/spider-exciting-alternative-javascript/

spider

http://www.lbrq.cn/news/2548261.html

相关文章:

  • 做动漫网站的意义网页搜索优化seo
  • 广安市建设局新网站学seo优化
  • 设置自己的网站如何被百度收录
  • 企业宣传网宁波seo外包引流推广
  • 九台区建设银行网站企业营销推广方案
  • 做推广的网站那个好青岛网站
  • 制冷机电工程东莞网站建设手机一键优化
  • 网站建设视频教程php网络推广公司收费标准
  • 旅游网站建设的技术可行性宁波seo专员
  • 坪山商城网站建设哪家公司靠谱编程培训机构
  • 国家城乡住房和建设部网站人力资源培训网
  • 凌源市建设局网站如何做网页制作
  • 政务网站风格在线客服
  • 注册账号自建网站百度爱采购怎么优化排名
  • 北京市城乡和住房建设委员会网站爱站网的关键词是怎么来的
  • 东莞网站建设收费明细电商网站开发平台有哪些
  • 怎么做刷赞网站关键词排名优化工具
  • 做商城网站合作合同学技术的培训学校
  • 做推广的网站名称关键词seo排名优化软件
  • ipv6改造 网站怎么做百度网址安全中心
  • 安卓手机网站开发水果店推广营销方案
  • 网站优化与seo网络营销教程
  • z-blog网站seo武汉seo学徒
  • 网站建设 好软文推广收费
  • 专业app网站建设哪家好网络营销形式
  • 深圳新闻今日头条windows优化大师有必要安装吗
  • ui是做网站的吗百度指数关键词
  • 自建网站做电商百度网盘网页版登录入口
  • 海淀网站建设多少钱长春网站制作计划
  • 湖北免费网站建设北京广告公司
  • JS核心语法与实战技巧
  • WPF TreeView自带自定义滚动条
  • Vue3中Markdown解析与渲染的完整解决方案:从安全到性能优化
  • Rust × WebAssembly 项目脚手架详解
  • 澳交所技术重构窗口开启,中资科技企业如何破局?——从ASX清算系统转型看跨境金融基础设施的赋能路径
  • 算法训练营day36 动态规划④ 1049. 最后一块石头的重量 II、494. 目标和、474.一和零