W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
這篇文章展示了如何將three.js置入node.js環(huán)境中, 這樣你就可以執(zhí)行自動化測試了。測試可以通過命令行或者類似Travis的CI工具來運行。
如果你習(xí)慣使用node和npm,
$ npm install three --save-dev
并將
const THREE = require('three');
添加到你的測試中。
如果你不太熟悉這些工具,下面是一個快速入門。(基于linux,在windows上的安裝過程會稍稍有點不一樣,不過NPM指令是相同的。)
$ sudo apt-get install -y npm nodejs-legacy
# 修復(fù)默認(rèn)registry URL中任何SSL的問題
$ npm config set registry http://registry.npmjs.org/
$ mkdir test-example; cd test-example
$ npm init
在所有出現(xiàn)的提示中敲擊回車鍵來接受默認(rèn)值。 這樣,一份package.json就建立好了。
$ npm test
當(dāng)然,這一定會失敗。 如果你檢查一下package.json,test script的定義是這樣的
"test": "echo \"Error: no test specified\" && exit 1"
我們將使用mocha。
$ npm install mocha --save-dev
你會注意到 node_modules/ 被創(chuàng)建了,并且你的依賴都出現(xiàn)在了這里面。 還有你的package.json被更新了,--save-dev指令向其中加入并更新了devDependencies屬性。
"test": "mocha --reporter list"
$ npm test
現(xiàn)在應(yīng)該就能成功執(zhí)行了,生成類似 0 passing (1ms) 的報告。
$ npm install three --save-dev
如果你需要three.js的其他版本,使用
$ npm show three versions
來確認(rèn)哪些是可用的。要讓npm使用正確的版本,執(zhí)行
$ npm install three@0.84.0 --save
(例子中用的是0.84.0)。 --save 指令將此加入項目的dependency而不是dev dependency。 更多信息請參閱這份文檔。
$ mkdir test
const THREE = require('three');
const assert = require("assert");
describe('The THREE object', function() {
it('should have a defined BasicShadowMap constant', function() {
assert.notEqual('undefined', THREE.BasicShadowMap);
}),
it('should be able to construct a Vector3 with default of x=0', function() {
const vec3 = new THREE.Vector3();
assert.equal(0, vec3.x);
})
})
The THREE object should have a defined BasicShadowMap constant: 0ms
The THREE object should be able to construct a Vector3 with default of x=0: 0ms
2 passing (8ms)
你需要做下面三件事:
第2、3條會根據(jù)你組織代碼的方式而改變。在上面給出的Physics.js的例子中,導(dǎo)出的部分在代碼的最末尾。 我們將module.exports賦值為一個對象:
//=============================================================================
// 為了在nodejs中可用
//=============================================================================
if (typeof exports !== 'undefined')
{
module.exports = Physics;
}
如果你已經(jīng)在使用require.js或者browserify之類的便捷工具,就跳過這個部分。
一般來說,一個three.js項目將在瀏覽器中運行,瀏覽器會通過執(zhí)行一系列script標(biāo)簽來加載模塊。 你自己的文件不用考慮依賴的問題。然而在nodejs環(huán)境中,沒有一個關(guān)聯(lián)所有文件的index.html,所以你需要顯式地加載。
如果你要導(dǎo)出的模塊還依賴其他文件,你需要告訴node去加載它們。下面是一種方式:
用Physics.js中的代碼舉例:
//=============================================================================
// 服務(wù)器端測試配置
//=============================================================================
if (typeof require === 'function') // 檢測nodejs環(huán)境
{
const THREE = require('three');
const MY3 = require('./MY3.js');
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: