顯示具有 JS 標籤的文章。 顯示所有文章
顯示具有 JS 標籤的文章。 顯示所有文章

2015年5月3日 星期日

AngularJS 在HTML一開始的引入問題

開始學習AngularJS 並在網頁上引入ng-app時遇到一個奇怪的問題:

首先建一個indexApp & its controller
var app = angular.module('indexApp', []);
app.controller('IndexController', ['$scope', function($scope){}]);


再來在網頁上使用ng-app並代入所創建的app值:

<html ng-app="indexApp">
  <body ng-controller="IndexController">
  </body>
</html>

>>>>> 無法作用

後來改為:

<html ng-app>
  <body ng-app="indexApp" ng-controller="IndexController">
  </body>
</html>

>>>>> 可以作用


之後再改回去第一個那樣的寫法,卻又可以使用了!!
不知是為何阿....第一次使用不能帶值嗎!?


// end

nodejs_定時排程

NODEJS的定時排程模組: node-schedule

遇到需要在特定時間點執行程式碼時使用:
  EX. 2014/11/07 17:00
或是沒有固定的時間間隔:
  EX. 每月1號(每月天數不一定)
固定時間間隔也可以(雖然也是固定時間間隔但比較重視時間的"點"):
  EX. 每個星期日下午5點

>> node-schedule 模組


每隔一段時間執行程式碼時使用:
  EX. 每隔5分鐘

>> setInterval()


setInterval()可以做的事情使用排程也可以做到,如果時間間隔較大或是需要精準的時間"點"那就會排程來做。



node-schedule 模組 (於 npm頁面)

Docs摘要:

  • 安裝方式 (Installation)
    • $npm install node-schedule
    • 並在.js檔內引入: var schedule = require('node-schedule');

  • 使用類Corn語法來排程工作 (Cron style Scheduling)
    • Cron
      • Cron Job 指的是定時去做的事情;例如每月1號凌晨都備份電腦;名稱由來是Linux裡的用來定時排程的工具名稱
    • 新增一個node-schedule
      • var job = schedule.scheduleJob('42 * * * *', function(){ //do job here });
      • 字串代表意思為每42分鐘;
      • 格式: [分鐘] [小時] [日期] [月份] [星期幾] [年(可不填)]

      • 使用Date來排程工作 (Date based Scheduling)
        • 建立Date物件
          • var date = new Date(2015, 5, 4, 22, 0, 0);
          • var job = schedule.scheduleJob(date, function(){ // job content here });
        • 刪除排程
          • job.cancel();
        • 在排程指定的時間使用現在的資料
          • var x = 'Tada!';
          • var job = schedule.scheduleJob(date, function(y){ console.log(y); }).bind(null, x);
          • x = 'Changing data';
          • 在排程事件發生時,會是印出 'Tada!'

      • 建立循環規則來排程 (Recurrence Rule Scheduling)
        • 建立規則
          • var rule = new schedule.RecurrenceRule();
          • // 設定 rule 物件屬性來指定時間點
          • rule.hour = 17; // 下午5點
          • rule.minute = 0; // 下午5點0分
          • // 也可以指定範圍
          • rule.dayOfWeek = [0, new schedule.Range(4, 6)]; // 每星期日.四~六的下午5點0分
          • var job = new schedule.scheduleJob(rule, function(){ // do jobs here });
        • 上述建立rule物件也可以直接用物件寫法取代
          • var job = new schedule.scheduleJob({hour: 17, minute: 0}, function(){ // do jobs here });


      *可以將建立的工作存在一個物件裡面,若是要刪除則直接刪除物件或指定為null即可取消排程工作。

      // end

      2014年8月26日 星期二

      JavaScript #1 查用物件特性的值

      因為要存取物件的某個特性裡的值(某個屬性裡的值),
      但是物件是從DB查詢出來的, 不確定特性的名稱,
      為了要用裡面的值, 一直使用 點 . 後面接變數名稱都無法使用,
      後來查書才發現原來還有另一個存取特性的方法, (犀牛書果然是必讀的聖經)
      也適用在識別字是保留字的時候使用中括號[ ]方法。

      使用物件時, 不知道特性的識別字(不知道屬性名字)時, 特性是不固定時,

      可以使用中括號[ ]裡面再使用字串變數來查用特性的值。

      / *

        *  查用物件特性的兩個方法
        *  參考: JS聖經犀牛書 :: JavaScript大全 第六版, o'reilly
        */

      查用物件特性的值的方法有兩種: 

      A: 使用 . (點)
      物件.特性

      B: 使用 [ ] (中括號)
      物件["特性"]


      EX: -----------------------------------------------------------


      var O = {};  // new an object

      O.mon = 1;  // has its own property "mon"

      var week_name = "mon";  // new a string variable

      console.log(O.mon);  // output: 1
      console.log(O.week_name);  // output: undefined
      console.log(O[week_name]);  // output: 1

      ----------------------------------------------------------------


      使用 . 來存取物件特性就不能使用變數,

      但使用 [ ] 就可以在裡面使用字串型態的變數存取到物件的特性,
      是一個實用的小技巧~


      // end