linux命令进入目录中网页未加载js脚本

让C代码在浏览器中运行——JavaScript惨遭抛弃?让C代码在浏览器中运行——JavaScript惨遭抛弃?前端小刘百家号转载自:www.blog.csdn.net/sinat_/article/details/WebAssembly作为一种新兴的Web技术,相关的资料和社区还不够丰富,但其为web开发提供了一种崭新的思路和工作方式,未来是很有可能大放光彩的。使用WebAssembly,我们可以在浏览器中运行一些高性能、低级别的编程语言,可用它将大型的C和C++代码库比如游戏、物理引擎甚至是桌面应用程序导入Web平台。截至目前为止,我们已经可以在Chrome、Firefox中使用WebAssembly,Edge和Safari对它的支持也基本完成。这意味着很快,就能在所有流行的浏览器中运行wasm了。在这篇文章中,我们将会演示如何将简单的C代码编译为wasm,并将其包含在网页中。在此之前,我们先来直观的了解下WebAssembly是如何工作的。WebAssembly是如何工作的?这里不涉及过多技术性的问题。我们知道,在今天的浏览器中,JavaScript是在虚拟机(VM)中执行的,该虚拟机能够最大化地优化代码并压榨每一丝的性能,这也使得JavaScript称为速度最快的动态语言之一。但尽管如此,它还是无法与原生的C/C++代码相媲美。所以,WebAssembly就出现了。Wasm同样在JavaScript虚拟机中运行,但是它表现得更好。两者可以自由交互、互不排斥,这样你就同时拥有了两者最大的优势——JavaScript巨大的生态系统和有好的语法,WebAssembly接近原生的表现性能。大多数程序员会选择使用C语言来编写WebAssembly模块,并将其编译成.wasm文件。这些.wasm文件并不能直接被浏览器识别,所以它们需要一种称为JavaScript胶接代码(glue code,用于连接相互不兼容的软件组件,详见:http://whatis.techtarget.com/definition/glue-code)的东西来加载。随着未来WebAssembly框架和本地wasm模块支持的发展,这一过程可能会有所缩短。开发前准备编写WebAssembly需要不少的工具,但作为一个程序员,下面的工具你应该大部分都已经有了。1、支持WebAssembly的浏览器,新版的Chrome或者Firefox均可(可以在此查看各个浏览器对某项内容的支持情况:http://caniuse.com/#feat=wasm)。2、C到WebAssembly的编译器,推荐使用Emscripten(https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html),安装这个工具费时费力费空间,但没办法,这是目前为止最好的选择,请仔细阅读安装说明,需占用约1GB的硬盘空间。3、一个C编译器/开发环境,比如Linux下的GCC,OS X下的Xcode,Windows下的Visual Studio。4、一个简单的本地web服务器,Linux/OS X下使用python -m SimpleHTTPServer 9000命令即可,Windows下可安装IIS服务。一、编写C代码下面我们编写一个非常简单的C语言例子,它将会返回1-6的随机数,在你所使用的工作目录下,创建一个dice-roll.c文件。#include&stdio.h&#include&stdlib.h&#include&time.h&#include&emscripten/emscripten.h&// 一旦WASM模块被加载,main()中的代码就会执行intmain(int argc, char ** argv){printf(&WebAssembly module loaded\n&);}// 返回1-6之间的一随机数int EMSCRIPTEN_KEEPALIVE roll_dice(){srand ( time(NULL) );return rand() % 6 + 1;}当我们将其编译为wasm并且在浏览器中加载时,main函数会自动执行,其中的printf将会被翻译成console.log。我们想要roll_dice函数能够在JavaScript中随时调用,为此,我们需要在函数名前添加EMSCRIPTEN_KEEPALIVE标记以告诉Emscripten我们的意图。二、将C编译为WebAssembly现在我们已经有了C代码,接下来需要将它编译成wasm,不仅如此,我们还需要生成相应的JavaScript胶接代码以便能够真正运行起来。这里我们必须使用Emscripten编译器,你会发现有大量的命令行参数和编译方法可选,经过实践,我们找到了下面这个最友好最实用的组合:emcc dice-roll.c -s WASM=1 -O3 -o index.js各个参数含义如下:emcc——代表Emscripten编译器;dice-roll.c——包含C代码的文件;-s WASM=1——指定使用WebAssembly;-O3——代码优化级别,3已经是很高的级别了;-o index.js——指定生成包含wasm模块所需的全部胶接代码的JS文件;需要注意的是,尽管上面的emcc选项能够很好地应对我们这个例子,但在更复杂的情况下,好需要使用不同的方法,可查看官方文档了解更多内容:http://kripken.github.io/emscripten-site/docs/tools_reference/emcc.html#emccdoc。三、在浏览器中加载WebAssembly代码现在我们将回到熟悉的web开发领域,在当前文件夹创建index.html文件,引入相关的js文件与CSS文件。&!DOCTYPE html&&head&&metacharset=&utf-8&&&metahttp-equiv=&X-UA-Compatible&content=&IE=edge&&&title&WebAssembly 示例&/title&&metaname=&viewport&content=&width=device-width, initial-scale=1&&&linkrel=&stylesheet&href=&CSS/styles.css&&&linkrel=&stylesheet&href=&CSS/dice-1.0.min.css&&&/head&&body&&divclass=&dice dice-6&&&/div&&span&点击以摇动筛子&/span&&!-- 引入JavaScript胶节文件 --&&!-- 这将会加载WebAssembly模块并运行其main函数 --&&scriptsrc=&index.js&&&/script&&/body&&/html&至此,项目结构已经完整,如下:style.css简单设置一下页面样式:body {padding: 40font: normal 16px sans-display:flex-direction:}.dice {display: block !font-size: 80margin: 0 auto 20cursor:}span {display:margin: 0color: #333;}dice-1.0.min.js是来自Github(https://github.com/diafygi/dice-css)的一个微型CSS骰子样式库,包括了1-6的SVG矢量图,可作为内联图标使用,用法与font-awesome和glyphicons相同。由于跨源问题的存在,我们需要一个本地服务器才能运行这个项目。在Linux/OS X系统中,可以在项目目录下运行如下命令:python -m SimpleHTTPServer 9000然后到浏览器中,打开localhost:9000以查看这个小应用。按F12打开控制台,即可看到我们在C代码中使用printf输出的问候语:四、调用WebAssembly函数最后一步是连接JavaScript与WebAssembly,由于胶接代码的存在(index.js),这项任务变得非常简单,它已经为我们处理好了所有的接线任务。在浏览器中处理WebAssembly有一个非常强大的API可以使用,在此我们不会进行深入探讨因为这已经超出了入门的范畴,我们只需要Module接口及其ccall方法这部分即可。该方法允许我们通过函数名从C代码中调用一个函数,然后就向一般的JS函数一样使用就行了。var result = Module.ccall('funcName',
// 函数名'number',
// 返回类型['number'],
// 参数类型[42]);
// 参数调用此方法之后,result就将拥有对应C函数的所有功能,除函数名以外的所有参数都是可选的。我们也可以使用缩写版:// 通过在函数名前添加下划线来调用C函数var result = _funcName();roll_dice函数无需任何参数,在JavaScript代码中调用十分简单:&script&// 当HTML dice元素被点击时,其值将会被改变var dice = document.querySelector('.dice');dice.addEventListener('click', function(){// 调用C代码中的roll_dice函数var result = _roll_dice();dice.className = &dice dice-& +
});&/script&将上面这段代码添加到index.html末尾,即之前即可。此时运行项目,即可看到结果:总结虽然现在WebAssembly还在发展的初期,但从公布的新标准来看,潜力巨大。在浏览器中运行低级语言的能力,将会带来全新的应用程序与web体验,而这,是仅仅通过JavaScript无法使用的。诚然,使用WebAssembly在当前阶段还十分繁琐,文档需要分为多个部分,相应的工具也不容易使用,并且还需要JavaScript胶接代码才能使用wasm模块。但随着越来越多的人进入这个平台,所有这些问题都将会被解决。令附一些参考资料:WebAssembly官网(www.webassembly.org/)WebAssembly on MDN(www.developer.mozilla.org/en-US/docs/WebAssembly)Awesome WASM(www.github.com/mbasso/awesome-wasm)Emscripten官网(www.kripken.github.io/emscripten-site/index.html)本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。前端小刘百家号最近更新:简介:动态情绪识别,HTML,CSS,JavaScript,Node作者最新文章相关文章1.下载代码
下载地址:https://nodejs.org/en/download/
下载Linux Binaries (.tar.xz)版本,位数根据操作系统位数选择
2.复制代码包
用FTP上传代码包到/usr/local/
3.解压代码包
命令:$xz -d&node-v4.4.4-linux-x86.tar.xz
   &&$tar -xvf &node-v4.4.4-linux-x86.tar
4.修改文件夹名
把node-v4.4.4-linux-x86修改成node
命令:mv&node-v4.4.4-linux-x86 node
5.找到python所在路径
命令:which python
6.设置环境变量
命令:export PATH=/usr/bin:/usr/local/node/bin:$PATH
7.查看是否安装成功
命令:node -v
如果安装成功会显示版本号,例如:v4.4.4
遇到的问题:
设置环境变量时冒号打成了分号,导致提示两个文件路径找不到,且ls之类的命令无法识别,但是重新用xshell连接又可以了,不明所以。。
python在linux中居然是内置的。
删除文件夹的命令:rm&-rf node
xz后缀的文件需要解压两次,这是与gz后缀的区别,直接把xz用tar解压是不行的。
阅读(...) 评论()linux下Nginx服务器导致CSS以及js无法解析不起效果
在linux下编译安装nginx服务器,上传了简单网页测试,发现网页排版出现混乱,css和js没有加载~,上网找了很多资料,最终得以解决
1.include mime.
添加如下:
2.添加后发现仍然不行,最后通过浏览器直接访问css和js文件发现出现:403 forbidden
在nginx.conf 头部加入一行:
nginx设置反向代理后,页面上的js css文件无法加载
nginx css或js无法加载的问题
nginx无法加载css
django 解决css,js文件304导致无法加载显示问题
html js/css文件修改提交后,没有效果
tomcat服务器下使用nginx实现最简单的动静分离--解决css、js不加载的问题
nginx 403 css/js
easyui问题
Web开发——问题:js/css文件修改提交后,没有效果
jQuery Mobile页面跳转导致css、js失效原因及解决方法
Nginx服务器静态资源无法访问,例css,js
没有更多推荐了,不积小流,无以成江海
nginx下配置的虚拟服务器加载js文件异常
在nginx下配置了多个虚拟服务器,但是总是出现页面加载异常的问题,对于tomcat服务器,有的js时间控件也不能正常显示,但是通过tomcat监听的域名访问的话,就能够正常显示。
问题原因是nginx默认下未配置proxy缓存,在虚拟服务器server配置下添加:proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;
就能够正常显示了。
nginx配置拒绝直接访问js文件
取消nginx对js css文件的缓存
tomcat服务器下使用nginx实现最简单的动静分离--解决css、js不加载的问题
nginx css或js无法加载的问题
返回xml或json过长时被nginx截断的解决办法
PHP返回内容过长时被nginx截断的解决办法
上传文件被nginx全部缓存的问题
Nginx服务器js加载不全,报206 (Partial Content)错误
没有更多推荐了,23:16 提问
在linux上部署web项目,网页可以出来,但不走后台。(只走html和js,不走java)
笔记本是Windows系统,用virtualbox装了个小红帽,把Windows的web项目用myeclipse导出为war包,放到linux的tomcat的webapps中。在Windows的浏览器中打开(
按赞数排序
是不是你的服务器和测试网页的电脑不在一个局域网呀?
你看看自己的主机和虚拟机能不能ping通
ip或者端口是否正确?
是否浏览器阻止了跨域请求?
可以从这两点着手。
F12看下访问浏览器的控制台是不是有错误信息了,发出的请求响应结果是什么。
具体什么原因 我也遇到了 怎么解决的呀?
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ajax请求后台有时走有时不走,是因为没有将请求设置为同步方式,async:false,(默认为true即异步)。如果不想使用缓存可以将cache:false,例如:$.ajax({
url : url,
cache:false,
async:false,
下面是ajax代码和Controller层代码,期初以为是后台程序写错了。
$(&#sourcefile&).ajaxSubmit({
type: &post&,
dataType: &json&,
// 'xml', 'script', or 'json' (expected server response type)
断点不过Java类,只走对应.class文件,怎么会事儿? [问题点数:40分,结帖人lp]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
public class Go { public static int i = 0; public static void main(String[] args){
calc(&&, 5);
System.out.println(&总共有&+i+&种走法~&); }
//上楼梯每次只需一步或者两步,有多少走法 public static void calc(
原因:用jsonp跨域访问, 会注册callback,
生产一个随机的callback,正确的jsonp格式应该是 callback({&id& : &1&,&name& : &小王&});
所以我们需要定义callback,前台指定回调函数jsonpCallback:&successCallback&,后台指定返回的json格式:String
result = &s
//javascript实现页面无刷新让时间走动
function showTime()
var date = new Date();
//获取时间对象
var year = date.getFullYear(); //获取年
var month = date.getMonth()+1;//获取月份,获取的月份比真实的
umeng分享以及登陆的一些坑
主要对于以下这些问题
1、只执行onStart,不执行onComplete
2、分享内容只有图片,没有url、title和contents
3、只能分享朋友圈,不能分享朋友
4、配置都正确,但是无法正确回调(执行了onError方法)
源生微信SDK分享以及登陆的一些坑
主要对于以下这些问题
1、分享成功后,再次分享时选择后退或关闭会闪退
用jQuery获取网页元素赋值即可,已用红色高亮显示:
function showLeftTime()
var now=new Date();
var year=now.getFullYear();
var month=now.getMonth()+1;
month='0'+
var day=now.getDate();
Ajax通过jsonp实现跨域访问,访问成功但走error不走success的的问题解决前提
最近工作中有个需求就是JS实现跨域访问,众所周知JS不能实现跨域访问,但是&script&&/script&标签却可以,这是Jsonp实现的原理,这里就不多讲了,这里主要讲ajax通过Jsonp访问虽然返回200但是总是走error不走success的问题方案,
注意:我通过localhost与12
今天同事遇到一个问题,UITableView走numberOfRowsInSection方法,却不走cellForRowAtIndexPath方法。问到我,我也一愣,想了想,好像遇到过。原因:UITableView的高度为 0 ;如果你的TableView的高度是根据内容的高度来自适应的话,当加载的数据为空时 reloadData 方法走完会将UITableView的高度设定为0。此时如果你有新的...

我要回帖

更多关于 网页加载资源js 的文章

 

随机推荐