標簽‘js’

基于Array的JavaScript表達式執行函數實現

最近項目涉及到表達式,簡單封裝了一些功能,如表達式解析、執行等,解析不用說,網上很多表達式字符串解析為詞法樹的庫,我們也不必再造輪子(我用jsep進行解析),這里說下執行表達式的方式。

默認字符串解析抽象詞法樹按理說是可以直接解析執行的,只不過通常此類詞法樹要表達的內容過于多,數據的存儲也過于龐大,于是我們結合自己業務對關鍵數據做了抽象,比如

查看更多...

為什么建議不要使用「h5」這個簡稱?

最近發現好多人喜歡將 HTML5 說成 h5,甚至是代指移動端的 Web 頁面或者 Web App。雖然說起來朗朗上口,但是小編真的不建議這樣來使用。

小編很早之前做過一個關于「h5 這個說法是否喜歡」的調查,總共有 552 位粉絲參與,最終結果是:有 16.7% 的人認為「很好」,37.5% 的認為「無所謂」,有 45.8% 的人認為「不喜歡」(投票數據的原始查看地址: http://vote.weibo.com/poll/2905710 )。那究竟為什么會有那么多人不喜歡「h5」這個簡稱呢?

「h5」這個簡稱非常不專業,容易造成誤導。

與 JavaScript 被簡稱為「JS」不同,據小編了解到的情況,h5 這個說法目前只在中國大陸地區的程序員中使用,臺灣、印度和美國等地區并沒有這個簡稱,會造成國內外技術說法不一致。而更重要的一點是,JS 是一個指代清晰的簡稱,沒有歧義,就指 JavaScript 這種程序語言。但 h5 卻不是,至少 HTML 中還有個 h5 標簽。 查看更多...

我為什么選擇Nunjucks作為NodeJS模板引擎

最近換了工作,在新的工作中,需要實現后端渲染,故而一改最初的純html+js形式,選擇頁面框架、TDK及部分頁面后端渲染,由于后臺采用java開發,一開始曾考慮另起一個tomcat服務,用于渲染前端頁面,而實際搭建完框架后發現,一年多不碰java(期間雖然用過Groovy、kotlin,但實際開發起來還是不如js來得暢快),已經對java的繁瑣有些不耐煩,最后轉而選擇采用NodeJS做后端渲染,一來部分前端模板可以復用(后面發現復用其實是個很糾結的想法),二來做前端開發的兄弟也可以快速上手,相比他們并不懂的java來說,畢竟NodeJS更容易學習接受。

確定了適用NodeJS,下面就確定一下大概框架,采用了目前常見的組合——express+template,因為最初前端使用了所謂最快的模板引擎artTemplate,這里tempate想進行復用,就采用了服務器版artTemplate,實際測試發現并不符合我的需求,由于最近一年使用PHP的YII框架,其中模板layout可以使用block,很方便重寫樣式、腳本等部分,這里實測后發現,后端模板如果沒有layout,基本和寫純靜態無異了。 查看更多...

關于HTML5不得不說的一些事

近兩年來,IT界炒的最火熱的發展方向無非是O2O,而炒的火熱的技術也無非是HTML5,但實際上,HTML5究竟是什么?能做什么呢?知其然,更要知其所以然,這是中國人對知識真理的追求寫照。然而在關于HTML5的問題上,這句話并沒有顯現出來。HTML5會改變下一代互聯網,HTML5潛力無限,這些觀點在互聯網上多之甚多。為什么呢?HTML5在互聯網上究竟帶來了什么?這些問題一拋出,全行就愕然了。甚至HTML5究竟是什么,都很難讓人闡述清楚。

首先,簡單而言HTML5就是超文本標記語言規范的5.0版本,當然對于不同的人來說,HTML5具有不同的意義。對某些人來說,它僅僅意味著"頁眉"和"頁腳"之類的新標簽,以及一系列出現于標記的新屬性。對其他人而言,這意味著出現在網絡上的新鮮有趣事物,其中包括植入單個瀏覽器或其他非HTML5規格的技術。 查看更多...

關于JS加密解密那點事

最近和ucd部分的前端開發有合作,可曾想他們發過來組件什么的都是加密處理過的,事實上組件又不完善,很多小的bug都要給他們定位,很是頭疼,果斷解密看看。

很多朋友以為JS的加密是不可逆的,其實常見的eval加密也談不上是加密,只能算是一種編碼(Encode)或者也可以成為是一種打包(packer),類似于base64這樣的編碼,都是可以以一定方式還原的,當然也就是“解密”了。

仔細觀察加密JS,你會發現,大部分文件里面都有function(p,a,c,k,e,r)或者是function(p,a,c,k,e,d),據說這樣的pack方式是dean edwards提出的,你可以訪問其個人主頁以獲取這方面的最新信息。后來還有一些編碼打包方式也是eval開頭,但是特征字符串p,a,c,k,e,r(d)改變了,我們姑且稱為是這種打包方式的一個變種吧,其實解碼很簡單,我們回顧一下JavaScript腳本中eval含義及用法。 查看更多...

Extjs 4.2 Grid增刪改及后臺交互(Java)

上次發了Easyui Datagrid的增刪改查的使用學習記錄后一直想整理下基于Extjs4.2的Grid學習使用記錄。苦于抽不出時間,一直拖到現在。不得不說,Extjs確實很強大,新版的Neptune風格也很入我眼,但畢竟沒怎么用過,第一次用,也不敢上來就搞什么自定義組件,也就純粹的model+store+panel聲明式創建表格了。

拋開分頁,拋開排序,今天只簡單講一下最近使用中總結出來的rest形式增刪改查數據的方式。發現這種方式挺不錯的,故而分享下。
代碼Example如下:
定義Model

Ext.define('Person', {
    extend: 'Ext.data.Model',
    fields: [{name: 'id',
        type: 'int',
        useNull: true
    }, 'email', 'first', 'last'],
    validations: [{ type: 'length',
        field: 'email',
        min: 1
    }, {type: 'length',
        field: 'first',
        min: 1
    }, {type: 'length',
        field: 'last',
        min: 1
    }]
});

查看更多...

用Dojo實現XHR、跨域、及其他Ajax請求

工作之余,收集了dojo的入門知識,以便以后查用。下面是用Dojo實現XHR、跨域、及其他Ajax請求的介紹,希望有用。

在任何瀏覽器上方便地實現Ajax請求是每一個Ajax框架的初衷。Dojo在這方面無疑提供了非常豐富的支持。除了XMLHttpRequest之外,動態script、iframe、RPC也應有盡有,并且接口統一,使用方便,大多數情況下都只需要一句話就能達到目的,從而免除重復造輪子的麻煩。而且,Dojo一貫追求的概念完整性也在這里有所體現,換句話說,在使用Dojo的Ajax工具的過程中不會感到任何的不自然,相反更容易有觸類旁通的感覺,因為API的模式是統一的,而且這里涉及到的某些概念(如Deferred對象)也貫穿在整個Dojo之中。

Dojo的XHR函數

Dojo的XMLHttpRequest函數就叫dojo.xhr,除了把自己取名美元符號之外,這好像是最直接的辦法了。它定義在Dojo基本庫里,所以不需要額外的require就能使用。它可以實現任何同域內的http請求。不過更常用的是dojo.xhrGet和dojo.xhrPost,它們只不過是對dojo.xhr函數的簡單封裝;當然根據REST風格,還有dojo.xhrPut和dojo.xhrDelete。 查看更多...

JSON基礎知識與Javascript解析方式分析

JSON即JavaScript Object Notation,是一種輕量級的數據交換格式,易于人閱讀和編寫。同時也易于機器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。

JSON建構于兩種結構:

1、“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。 查看更多...

jsp頁面中使用iframe幾個問題總結

最近做項目,jsp的,我做前臺的輸出,因為不常用jsp做界面美化,更不常用iframe控制頁面。這回可算遇到不少問題了,首先,在iframe內部使用link獲取css和jsp整個文檔中獲取獲取js腳本都有問題,其次就是,遇到了ff的onclick未定義情況。這里不再贅述,相信大家都遇到過了吧,可惡的網絡,卡的要命。剛剛寫了近一千字的內容,居然沒有保存,發布后只有兩個字,杯具啊!平時幾分鐘保存一次草稿,這次居然沒有自動保存,果斷不寫了。直接給出我網上搜集的解決方法。

首先就是link問題,這里我還沒有找到問題根源,直接jsp include動態寫頁內了。

然后就是ff的onclick事件。找了以下解決方案。
firefox沒有這個事件,需要自己處理一下,代碼如下:

function doClick(obj) {
if (document.all) {//如果支持的話,是ie下,默認有這個事件,
obj.click();
} else { //否則就自己添加一個
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", true, true);
obj.dispatchEvent(evt); 查看更多...

IE提示“無法打開Internet站點…”分析解決

整理這篇文章是因為今年春節在外地沒回去,所以這么晚還在網吧上網,看到網吧經典的ie6打開百度都報錯,感覺很是不爽,還好我自己習慣了用chrome內核的瀏覽器,但其他人就不行了,剛剛聽到有人問網管怎么解決打不開百度的問題,我仔細分析了下,貌似是百度的龍年新logo對于ie6不兼容所致,故這里整理發表此文,另外,想體驗下百度龍年動態logo,還是用高版本的ie或者其他內核瀏覽器吧!

通過網上資料得知,如果js改變dom element,而該element尚未加載完畢,就會造成ie下無法打開站點的錯誤警告。 查看更多...

黑龙江22选5开奖