<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>第8音 PD  ID  UE &#187; Aptana</title>
	<atom:link href="http://blog.d8in.com/posts/tag/aptana/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.d8in.com</link>
	<description>Design is a  Life Style</description>
	<lastBuildDate>Wed, 10 Mar 2010 12:44:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Aptana Jaxer</title>
		<link>http://blog.d8in.com/posts/181.html</link>
		<comments>http://blog.d8in.com/posts/181.html#comments</comments>
		<pubDate>Thu, 24 Jan 2008 09:43:37 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Jaxer]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/181.html</guid>
		<description><![CDATA[
今天用Aptana 有了新的更新，软件版本更新到了1.1同时推出一个重要的功能就是Aptana自创的Jaxer，号称是世界上第一个Ajax服务端，虽然是1.0版本，但是发现网站上的资料库已经相当健全，而且还有不少的视频演示。
引用一段官方的对Jaxer的说明翻译：
Jaxer改变了这一切，它是世界上第一个真正的Ajax服务器。在Jaxer里面, HMTL, CSS,Javascript都是它的其中一个对象，就象XMLHttpRequests, JSON, DOM一样。并且作为服务器，它提供了进入数据库、档案和网站建设，以及服务器日志、进程管理、安全性、可扩展性和整合了API。
其实javascript本身是具有服务端运行的属性的，譬如下面这段代码：
客户端运行
&#60;script type=&#34;text/javascript&#34;&#62;
&#160; &#160; document.write(&#34;hello word&#34;);
&#60;/script&#62;
服务端运行
&#60;script type=&#34;text/javascript&#34; runat=&#34;server&#34;&#62;
&#160; &#160; document.write(&#34;hello word&#34;);
&#60;/script&#62;

只要 script声明的时候是runat=&#8221;server&#8221;，就表示在服务端运行，这样的写法其实稍微喝.net类似。而且javascript本身也是可以调用数据库做一些稍微复杂的操作的。但是代码十分繁琐，Jaxer通过再次封装同时加入一些新的功能在里面，就是javascript语言在服务端的功能大大增强。
看下面一段示例代码:
Enter and number between 5 and 50:&#60;input id=&#34;number&#34; size=&#34;10&#34; type=&#34;text&#34; /&#62;
&#60;input&#160;type=&#34;button&#34; value=&#34;submit&#34; onclick=&#34;SubmitNumber()&#34; /&#62;
&#160;
&#60;script&#160;type=&#34;text/javascript&#34; runat=&#34;server&#34;&#62;
&#160; &#160; var count =Jaxer.File.read(&#34;count.txt&#34;);
&#160; &#160; document.getElementById(&#34;number&#34;).value=count;
&#160; &#160; 
&#160; &#160; function saveNumber(number){
&#160; &#160; &#160; &#160; if (validateNumber(parseInt(number))) {
&#160; &#160; &#160; &#160; &#160; &#160; Jaxer.File.write(&#34;count.txt&#34;,number);
&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/xwxw/2215682109/" title="jaxer by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2350/2215682109_91df01d3bc_o.jpg" width="380" height="90" alt="jaxer" /></a></p>
<p>今天用Aptana 有了新的更新，软件版本更新到了1.1同时推出一个重要的功能就是Aptana自创的Jaxer，号称是世界上第一个Ajax服务端，虽然是1.0版本，但是发现网站上的资料库已经相当健全，而且还有不少的视频演示。<br />
引用一段官方的对Jaxer的说明翻译：</p>
<blockquote><p>Jaxer改变了这一切，它是世界上第一个真正的Ajax服务器。在Jaxer里面, HMTL, CSS,Javascript都是它的其中一个对象，就象XMLHttpRequests, JSON, DOM一样。并且作为服务器，它提供了进入数据库、档案和网站建设，以及服务器日志、进程管理、安全性、可扩展性和整合了API。</p></blockquote>
<p>其实javascript本身是具有服务端运行的属性的，譬如下面这段代码：<br />
<strong>客户端运行</strong></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.write(&quot;hello word&quot;);</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><strong>服务端运行</strong></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">server</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.write(&quot;hello word&quot;);</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><span id="more-181"></span><br />
只要 script声明的时候是runat=&#8221;server&#8221;，就表示在服务端运行，这样的写法其实稍微喝.net类似。而且javascript本身也是可以调用数据库做一些稍微复杂的操作的。但是代码十分繁琐，Jaxer通过再次封装同时加入一些新的功能在里面，就是javascript语言在服务端的功能大大增强。</p>
<p>看下面一段示例代码:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">Enter and number between 5 and 50:</span><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">number</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">submit</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SubmitNumber()</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">server</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; var count =Jaxer.File.read(&quot;count.txt&quot;);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.getElementById(&quot;number&quot;).value=count;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function saveNumber(number){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if (validateNumber(parseInt(number))) {</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Jaxer.File.write(&quot;count.txt&quot;,number);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; saveNumber.proxy=true;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function SubmitNumber(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; var currentValue=document.getElementById(&quot;number&quot;).value;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if(validateNumber(parseInt(currentValue))){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; saveNumber(currentValue);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(&quot;Your number is save&quot;)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; else{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(&quot;Your number is out of range&quot;)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">both</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function validateNumber(number){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if(number</span><span style="color: Olive;">&lt;</span><span style="color: Green;">5</span><span style="color: Gray;">||</span><span style="color: #00008b;">number</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">50){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; else{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>从代码中可以看出，客户端和服务端的数据通信无阻隔，想必是最大的优势。用一门语言可以写服务端也写客户端，可以随意设定语句是在服务端运行还是客户端运行，还是服务和客户端都运行。虽然现在Jaxer刚刚发布，功能还不是很强大，不过确实试验一下还是蛮有意思的东西。</p>
<p><a href="http://www.flickr.com/photos/xwxw/2216450522/" title="page_flow_diagram by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2102/2216450522_ee519caa86_o.png" width="380" alt="page_flow_diagram" /></a></p>
<ul>
<li>Write entire applications or presentation layers in Ajax </li>
<li>Full DOM and JavaScript on the server</li>
<li>Seamless communications between browser and server</li>
<li>Access existing pages written in other languages like PHP, Java, or Ruby on Rails</li>
<li>Share validation code on the browser and server</li>
<li>Database, file, and socket access from JavaScript</li>
<li>Open-source, standards-based, and uses the APIs you already know</li>
</ul>
<p><strong>相关资料：</strong><br />
<a href="http://aptana.com/jaxer/">Jaxer 官方网站</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/181.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
