44 | | |
45 | | === Javascript === |
46 | | * W3Schools' basic JS: http://www.w3schools.com/js/ |
47 | | |
48 | | * jQuery is used for client-side business logic (hiding fields, opening up tabs, etc): |
49 | | * Tutorial 1: http://docs.jquery.com/Tutorials:How_jQuery_Works |
50 | | * Tutorial 2: http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery |
51 | | * Main reference: http://docs.jquery.com |
52 | | * We use some plugins: http://plugins.jquery.com |
53 | | * & some Widgets: http://jqueryui.com |
54 | | |
55 | | * ExtJS is used for some advanced widgets: |
56 | | * http://www.sencha.com |
57 | | * http://dev.sencha.com/deploy/ext-4.0.0/examples/ |
58 | | * API: http://www.extjs.com/deploy/dev/docs/ |
59 | | |
60 | | * S3 includes a cross-browser debug utility (only shows up when ?debug=1): |
61 | | {{{ |
62 | | s3_debug('message', value); |
63 | | }}} |
64 | | |
65 | | All global variables should be in the S3 namespace: |
66 | | * http://yuiblog.com/blog/2006/06/01/global-domination/ |
67 | | |
68 | | Private variables should be protected, e.g. using the Module Pattern: |
69 | | * http://yuiblog.com/blog/2007/06/12/module-pattern/ |
70 | | * http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth |
71 | | |
72 | | Can test out the performance of different options to achieve a task using: |
73 | | * http://jsperf.com |
74 | | |
75 | | Can check quality using JSLint: |
76 | | * http://www.javascriptlint.com/online_lint.php |