美文网首页
Coding in Web Client

Coding in Web Client

作者: liyinkan | 来源:发表于2014-02-12 10:42 被阅读103次

    Coding with Javascript


    be aware of toFixed function

    be aware of this

    • need provide changing scope function

    Test

        function test() {
          console.debug(this)
        }
        
        function test_class_A() {
          this.test = test;
        }
        
        function test_class_B() {
          this.test = test;
        }
        
        var cls1 = new test_class_A(),
          cls2 = new test_class_B();
        cls1.test() // output: test_class_A
        cls2.test() // output: test_class_B
    

    prefer doing calculations on Server

    • js regards number as float
    • js store float according to IEEE 754-2008
      • 0.1 + 0.2 = 0.30000000000000004
    • use lib like BigDecimal.js

    extend javascript native functions

    authentication and authorization

    • do validate both on Server - java and Client - javascript

    cache solution

    • what should be cached
      • supporting data
      • profile
      • ...
    • do cache on Server (use memory) not on Browser
    • when / how to update cache

    compress and cache statics resources

    • including image | css | javascript
    • use browser cache
      • check version before loading application resources
      • load css | javascript by javascript
      • support multiple browsers

    load by module / lazy loading

    • requirejs / seajs

    define namespace

    • short action.common action.module is much better than com.action.web.common

    build common utilities

    • everyone can add utility but need to be reviewed before pushing code

    build page by Components

    • everyone can add components but review also needed

    build common ui components with business first

    • everyone can add common ui components but review also needed
    • common ui components is one of the components
      • office select combo
      • ...

    construct page by Components not by Templates and Logic

    • reuse components by configurations
    • layout page by HTML and fill each div with components

    how to load User Context

    decouple between pages and modules

    • just like what CAB does
    • use event to create and add views
    • use global event bus

    design navigation first

    define global constants

    do all AJAX request by common utility

    maintain API documents

    do unit tests

    <script src="./resources/testharness.js"></script> <br />
    <script src="./resources/testharnessreport.js"></script>

        test(function() {
          var request = window.indexedDB.open("TestDB")
          var resp = window.indexedDB.deleteDatabase('TestDB')
          assert_not_null(resp)
        }, 'test delete db')
        
        test(function() {
          var req = window.indexedDB.open("TestDB")
          assert_not_null(req)
          req.onerror = function(event) {
            assert_unreached('open error', event.target.errorCode)
          }
          req.onsuccess = function(event) {
            assert_not_null(req.result)
          }
        }, 'open db with callbacks')
    

      /* set divX background to white when the buttonX is clicked */
      var divX = $('#divX')        // var divX = Ext.getCmp('divX')
      var buttonX = $('#buttonX')  // var buttonX = Ext.getCmp('buttonX')
      
      buttonX.click(function(){    // buttonX.on('click',function(){
        updateBackground();      //   updateBackground();
      })                           // })
      
      function updateBackground() {
        divX.setBackground('#fff')
      }
    

    changed to

        /* set divX background to white when the buttonX is clicked */
        var divX = $('#divX')        // var divX = Ext.getCmp('divX')
        var buttonX = $('#buttonX')  // var buttonX = Ext.getCmp('buttonX')
        
        buttonX.click(function(){     // buttonX.on('click',function(){
          updateBackground(divX);   //  updateBackground(divX);
        })                            // })
        
        function updateBackground(divX) {
          divX.setBackground('#fff')
        }
    

    test could be

        test(function() {
          var div = $('<div></div>')
          updateBackground(div)
          assertEqual(div.getStyle().getBackground(), '#fff')
        }, 'test set background')
    

    more references

    相关文章

      网友评论

          本文标题:Coding in Web Client

          本文链接:https://www.haomeiwen.com/subject/wklhtttx.html