three.js中文文档学习之如何本地运行详解


Posted in Javascript onNovember 20, 2017

前言

本文属于系列问题,需要的朋友们开始之前可以参考以下的两篇文章:

1、three.js中文文档学习之创建场景

2、three.js中文文档学习之通过模块导入

如果你只是使用程序化的几何体,不需要加载任何材质,网页应该直接从文件系统加载,只需要双击文件管理器中 HTML 文件,应该在你的浏览器能够运行(地址栏长这样子:file:///yourFile.html)

从外部文件加载内容

如果你从外部文件下载模块和材质,由于浏览器的 同源政策 的安全限制,会引发安全异常而加载失败。

有两种解决办法:

在浏览器中对于本地文件修改安全性。你才能这样进入网页:

file:///yourFile.html

从本地 web 服务器运行文件,你能这样进入网页:

http://localhost/yourFile.html

如果你使用第一种,要注意你使用同一个浏览器(修改安全性之后的)进行正常上网时会让自己处于易受攻击状态。你可以创建一个独立的浏览器配置和快捷方式,仅用作本地开发来确保安全。让我们依次看看每种方法。

运行本地服务器

很多编程语言有内置的 HTTP 服务器。他们没有像 Apache或者 NGINX的全部功能,但对于测试 three.js 应用已足够。

Node.js 服务器

有一个简单的 HTTP 服务器安装包,安装:

npm install http-server -g

运行:

http-server -p 8000

Python 服务器

如果你安装了 Python,在你的工作目录下运行以下命令行:

//Python 2.x
python -m SimpleHTTPServer

//Python 3.x
python -m http.server

会从当前目录转到 localhost 的 80 端口发起服务,地址栏是这样:

http://localhost:8000/

PHP 服务器

PHP 也有内置的 web 服务器,php 5.4.0 及以后:

php -S localhost:8000

Ruby 服务器

如果你安装了这个,你可以运行如下代码:

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"

Lighttpd

它是一个非常轻量的通用 web服务器。我们以安装了 HomeBrew 的 OSX 系统为例。不像上述服务器,lighttpd 是一个成熟的服务器产品。

通过 homebrew 安装

brew install loghttpd

在你想运行 web 服务器的地方创建名为 lighttpd.conf 的配置文件。示例:

server.document-root = "/var/www/servers/www.example.org/pages/"

server.port = 3000

mimetype.assign = (
 ".html" => "text/html", 
 ".txt" => "text/plain",
 ".jpg" => "image/jpeg",
 ".png" => "image/png" 
)

在配置文件中,改变 server.document-root 到你需要服务的目录。

开启:

lighttpd -f lighttpd.conf

输入 http://localhost:3000/ 就能从你选择的目录提供静态文件的服务。

改变本地文件的安全政策

Safari

使用偏好设置面板开启开发者选项:高级 -> "在菜单栏中显示开发菜单".

然后在 开发 -> 停用本地文件限制。如果你使用 Safari 来编辑和调试的话,值得注意的是 safari 对于缓存总有异常行为,所以在同样的菜单下点击 停用缓存 是个明智的选择。

chrome

首先关闭所有运行的chrome 实例,记住是所有。

在 Windows下,你需要用进程管理器检查是否都关闭了。或者,如果你在系统托盘里看见了 chrome 图标,打开右键菜单点击 退出。应该能关闭所有实例。

然后通过命令行标记启动 chrome 程序:

chrome --allow-file-access-from-files

在 Window 下,最简单的方法就是创建一个特殊的快捷方式图标,在结尾添加如上的标识。(右键 chrome 的快捷方式 -> 属性 -> 目标)

Firefox

在地址栏,输入 about:config

找到 security.fileuri.strict_origin_policy 参数

设定为 false

其他简单都方法也在 Stack Overflow 中有讨论。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
获取当前网页document.url location.href区别总结
May 10 Javascript
javascript 动态table添加colspan\rowspan 参数的方法
Jul 25 Javascript
jQuery 技巧小结
Apr 02 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
Mar 25 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
Dec 10 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
jQuery实现带进度条的轮播图
Sep 13 jQuery
AngularJS实现自定义指令及指令配置项的方法
Nov 20 #Javascript
详解webpack + react + react-router 如何实现懒加载
Nov 20 #Javascript
详细分析jsonp的原理和实现方式
Nov 20 #Javascript
three.js中文文档学习之通过模块导入
Nov 20 #Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
Nov 20 #Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 #Javascript
three.js中文文档学习之创建场景
Nov 20 #Javascript
You might like
php Try Catch异常测试
2009/03/01 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python 测试实现方法
2008/12/24 Python
python的mysqldb安装步骤详解
2017/08/14 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
大学生学业生涯规划
2014/01/05 职场文书
投资合作协议书
2014/04/17 职场文书
五年级学生评语大全
2014/12/26 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Java实现简易的分词器功能
2021/06/15 Java/Android
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL