最近,我遇到了这样的代码: if (0 === $something) { } 上面的代码之间是否有任何区别: if ($something === 0) { } 解决方案 实际上,在绩效方面或功能性的角度,性能都没有差异.我可以说这是一个个人选择编码样式的选择,通常称为 在编程术语中,YODA条件(也称为YODA符号)是一种编程样式,其中表达式的两个部分在条件语句中逆转. 我更喜欢以后的方式,因为第一种方式杀死了代码的可读性(至少对我而言) 其他解决方案 不, 两者之间绝对没有区别,因为如果条件会检查双方之间的平等.
以下是关于 typescript 的编程技术问答
我尝试将Angular 2到PHP的数据发布: let headers = new Headers(); headers.append('Content-Type', 'application/json'); var order = {'order': this.orders}; this.http.post('http://myserver/processorder.php', JSON.stringify(order), { headers: headers }).subscribe(res => { console.log('post result %o', res); }); 在Angular 2中,只能将字符串发布为数据而不是JSON?对我来说还可以,但是我很难获取PHP上发布的数据.我尝试了$obj = $_POST['order']; 解决方案 MARC B是正确的,但是发生的事情是$ _post数组将包含一个空值,并带有一个键设置的JS
我正在尝试重新创建 post json从Angular 2到PHP ,但它不起作用,因为$_REQUEST php侧变量中没有什么 代码: searchHttp({body}: any): Promise { let headers = new Headers ({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers, method: "post" }); let test_this = {"search": "person"}; return this.http.post(this.post_url, JSON.stringify(test_this), options) .toPromise() .then(response => {
我已经看到了许多解决方案来格式化AngularJS中的电话号码输入字段,但是我在Angular7上找不到任何东西.我本质上想要的是用户在Textfield中键入以下内容: 123456789 和供textfield格式化输入为: (123)456-789 我该怎么做?我找到了以下正则验证: ^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 解决方案 您可以使用电话面具指令进行处理, export class PhoneMaskDirective { constructor(public ngControl: NgControl) { } @HostListener('ngModelChange', ['$event']) onModelChange(event) { this.onInputChange(event, false); } @HostListener('key
我有一个由长生不老药/凤凰建造的后端,还有一个由Angular 2(打字稿,早午餐,用于构建的IO,ES6)构建的前端.我现在想使用凤凰频道.而且我有点拼命地试图在我的前端使用凤凰javascript客户端. 我安装 a> via npm install phoenix-js,然后尝试将其注入类似角的服务中: import { Socket } from "phoenix-js"; 我总是在编译过程中获取错误Cannot find module phoenix-js. 我有点卡住,关于如何使此工作的所有提示将不胜感激. 谢谢 解决方案 编辑:我将在下面留下旧答案 - 即使有点鸣钟.使所有内容都可以正常工作,并使用Angular 2的Phoenix JS客户端的最新版本比我想象的要容易得多,而且我感到非常困惑. Phoenix JS客户端已被提取为NPM软件包,可以找到在这里.使用npm install --save phoenix安装.然后将其加
我正在使用Visual Studio,Phaser和Typescript开发我的第一场游戏. 当我使用扩展关键词 时,我无法让我的课程工作 这有效: class Game { game: Phaser.Game; constructor() { // init game this.game = new Phaser.Game(window.innerWidth * window.devicePixelRatio - 20, window.innerHeight * window.devicePixelRatio - 20, Phaser.CANVAS, 'content', State); } } 这不是: class Game extends Phaser.Game{ constructor() { // init game super(window.innerWidth * window.devicePixelRat
我觉得自己在做错事,但是搜索我什么都没有提出的phaser + typecript与范围问题(虽然js'this'/范围上的吨 - 似乎并没有很好地翻译). 我正在尝试设置一个phaser.game实例,根据我的理解,该实例需要一些回调(在我的情况下,预紧额,创建然后更新).更新被调用,直到浏览器关闭为止. 我的问题是在内部更新,我无法访问当前类中的变量. 代码: import { Player } from "./Player"; import { InputManager } from "./input/InputManager"; import { Point } from "./geometry/Point"; export class Game { private player: Player; private inputManager: InputManager; private game: Phaser.Game;
我知道这已被问到,但仍然无法为我的案子找到解决方案. 我有一个文件,我定义某些值,然后我要通过它们循环.我在代码的这一部分中得到错误 preloadImages(){ this.load.setPath("./assets/images"); for (const key in STATIC.IMAGES) { if (STATIC.IMAGES.hasOwnProperty(key)) { this.load.image(STATIC.IMAGES[key], STATIC.IMAGES[key]); } } } 投诉出现在静态图像上[键]调用. 静态来自带有 的文件 export const STATIC = { SCENES: { LOAD: "LOAD", MENU: "MENU" }, IMAGES: { MENU_BG
尝试在移相器和TexturePacker中使用Multiatiatlas功能. 获取此错误: VM32201:1 GET http://localhost:8080/bg-sd.json 404 (Not Found) Texture.js:250 Texture.frame missing: 1/1.png JSON文件实际上位于http://localhost:8080/dist/img/bg-sd.json,我可以浏览.我也可以浏览到http://localhost:8080/dist/img/bg-1-sd.png. 我正在加载地图集: scene.load.multiatlas({ key: 'bg-sd', atlasURL: 'dist/img/bg-sd.json', baseURL: 'dist/img' }); 1/1.png框架也在文件中: { "tex
我有一个使用Phaser 3构建的项目,奇怪的是,它没有显示Spritesheet(它看起来为黑色矩形).它仅发生在移动设备(在模拟器上运行并在移动野生动物园上运行).在我的Mac上,它显示正确(Chrome和Safari). 代码: in boot-scene.ts: this.load.spritesheet('character-walk', 'assets/walk.png', { frameWidth: 547, frameHeight: 481 }, ); in game-scene.ts: this.player = this.add.sprite(100, 600, 'character-walk') 屏幕截图: 任何帮助将不胜感激. 解决方案 type: Phaser.CANVAS如果项目需要WebGL加速,则不是解决方案.我发现,当精灵在任何一个方向上超过一定数量的像素时,就会发生这种情况.例如,我有一个3000px x
在Vscode中构建Typescript时,我会收到以下错误: 错误ts6082:仅支持'amd'和"系统"模块 - 淘汰. 我的设置如下: tsconfig.json { "compilerOptions": { "target": "ES5", "module": "commonjs", "out": "current/game.js", "removeComments": true, "sourceMap": false } } .vscode/tasks.json: { "version": "0.1.0", // The command is tsc. Assumes that tsc has been installed using npm install -g typescript "command": "tsc",
phantomjs不支持HTML5音频标签,这使得很难测试我的Angular2应用程序.我环顾四周寻找解决方案,但不幸的是,我无法找到一种模拟音频对象或以某种方式解决这个问题的方法.我有一个看起来像这样的Angular2服务: import {Injectable} from 'angular2/core'; @Injectable() export class MyService { var snd; constructor() { this.snd = new Audio('Assets/sound.wav'); } simpleFunction() { return true; } } 我的测试看起来像这样: import {describe, expect, it} from 'angular2/testing'; import {Component} from 'angular2/core'; import {MySer
最近几天,我一直在与报道报告工作时一直在与之抗争,而且我遇到了一个我无法解决的问题.我收到的堆栈跟踪,带有几行调试代码,是 15 07 2016 14:41:53.413:DEBUG [middleware:source-files]: Requesting /jspm_packages/npm/process@0.11.5/browser.js / 15 07 2016 14:41:53.413:DEBUG [middleware:source-files]: Fetching /jspm_packages/npm/process@0.11.5/browser.js 15 07 2016 14:41:53.415:DEBUG [proxy]: proxying request - /jspm_packages/npm/process@0.11.5/browser.js to localhost:9876 15 07 2016 14:41:53.417:DEBUG [middlew
我已经使用了Angular CLI(1.0.0-RC1.0.0)创建了一个户外项目.然后,我安装了phantomjs插件( npm安装karma-phantonjs-launcher ). 繁殖步骤: 使用Angular2 CLI创建项目( ng new Testphantomjs ) 运行 npm安装karma-phantonjs-launcher 在karma.conf文件中添加phantomjs,即更改为browsers: ['Chrome'] this browsers:['Chrome', 'PhantomJS'] 原因是,对于团队城市集成,我需要一个无头的浏览器. 只要将Chrome指定为浏览器,测试运行正常 问题是当您尝试使用phantomjs时.您将根据下图获得错误.我的研究表明,这与phantomjs和JavaScript版本兼容性有关.但是,我尚未找到解决此问题的解决方案. 是否有人遇到过这个解决方案? 我的karma.conf //
我正在为Angular2中的服务构建一些单元测试. 在我的服务中,我有以下代码: var hash: string; hash = this.window.location.hash; 但是,当我运行包含此代码的测试时,它将失败. 使用窗口的所有功能,这是很棒的,但是当我使用phantomjs时,我认为这是不可能的(我也尝试了chrome,从而产生相同的结果). 在Angularjs中,我本来会诉诸于嘲笑$ window(或至少有问题的属性),但是由于Angular2单位测试没有很多文档,因此我不确定如何执行此操作. 有人可以帮忙吗? 解决方案 在Angular 2中,您可以使用@Inject()函数通过使用字符串令牌命名窗口对象,例如此 constructor( @Inject('Window') private window: Window) { } 在@NgModule中,您必须使用相同的字符串提供它: @NgModu
我有以下联合: type Letter = 'a' | 'b' | 'c' | 'd' | 'e' 我想使用模板字面类型允许1-3个字母的排列: type Variation = Letter | `${Letter}-${Letter}` | `${Letter}-${Letter}-${Letter}` 在预防重复的字母的同时,我如何在打字稿中实现此目标,因此" a" a" b-d"" a-c-d"和" d-c-a"是可以的,但是不允许" a-a-a-c". 解决方案 type Letter = 'a' | 'b' | 'c' | 'd' | 'e' type Variation = (T extends `${infer A}-${infer B}` ? (B extends `${infer BA}-${infer BB}` ? ( `${A}-${Exclude
我已经开发了一个使用离子3框架的应用程序.我想测量应用程序的CPU和内存使用量.最好的做法是什么? 解决方案 您不得使用AndroidStudio和XCode来测量 ionic app 的内存使用 . 为什么?这是 不幸的是,我们无法在我们的 结尾.您是否介意使用Safari Dev在设备上检查您的应用 工具而不是Xcode中的内存工具?我推荐这个原因 是因为Xcode内存工具可能会误导 它实际上不是在测量javaScript堆的内存使用 相反,应用程序正在读取内核/OS本身使用的内存. 因此,基于我在这里描述的相同概念,操作系统将无法自由 在JS虚拟机使用的情况下使用的内存1.考虑操作 使用这种记忆将经常发生,并且2.认为 有足够的记忆可备用.因此,虽然JS堆内存将是 每次JS引擎运行垃圾收集时都会收缩, 并不意味着iOS分配给浏览器的内存将 收缩,如果iOS有很多时,iOS确实开始释放记忆 可用的内存您实际上会看到性能问题.另外,是 重要的是要记住,高内存使用情况不
只是把它放在那里,看看其他人是否有这个问题... 我使用WebPack作为构建工具构建了一个带有打字稿的Angular 2应用程序,但是一切都很好,但是我注意到Typescript编译非常慢,我现在12秒钟...清楚这都是由于打字稿的汇编过程.... 我已经使用了TS-Loader或Awesome-typescript-Loader进行类似的结果,如果我评论此加载程序,我的构建时间会下降到1秒左右... 经过一项研究,在编译打字稿时具有"缓慢"的"慢速"似乎是"正常",但是正常的12秒? 旧帖子暗示这可能是由于节点版本冲突,我当前正在运行v4.4.2 ... 如果有人在那里发现了错误的情况. const path = require('path'); const merge = require('webpack-merge'); const webpack = require('webpack'); const NpmInstallPlugin = re
我需要制作一个组件女巫,其中包含一个带有大量行的桌子. 所有这些都在小型数据上效果很好.但是,如果项目数量增长到2000年,那么落后.滚动,尤其是动画变得太慢. 我还尝试设置 trackby ngfor ,但在这种情况下对性能没有影响. 请,请参阅 stackblitz example; 当您使用100件物品时,您可以看到所有这些都可以完美地工作,因此在2000年,它的星星冻结,在10,000上,这是不可用的. 我想知道什么是在Angular中显示带有大量数据的网格的正确方法,以及如何提高此类页面的性能? 是否有一些懒惰加载实现的示例,我可以以DOM中的HTML形式出现可见行,并且除Scroll以外的所有行都从DOM中删除? 任何想法都将不胜感激. 更新 我有最新版本的Chrome浏览器:版本66.0.3359.181(官方构建)(64位). 我尝试了它的不同PC,浏览器:它仅在Chrome中冻结(Mac Book的Chrome中,它