반응형
반응형

jquery와 angulars 같이 사용하기.

requireJS로 시작했다가 무거운거 같아서 그냥 같이 쓰는걸로 해봤다.

문법적인 문제는 발견되지 않았다. 너무 간단한 테스트라서 그럴지도.

 

AS-IS

 : index.html에 require.js와 main.js, angular.js, controllers.js 등을 녹여넣었다.

* index.html

<!doctype html>
<html lang="en" ng-app>
    <head>
        <title>jQuery+RequireJS Sample Page</title>
        <!-- This is a special version of jQuery with RequireJS built-in -->
        <script data-main="scripts/main" src="scripts/require-jquery.js"></script>
               </script>
    </head>
    <body ng-controller="PhoneListCtrl" >
        <h1>jQuery+RequireJS Sample Page</h1>
        <p>Look at source or inspect the DOM to see how it works.</p>
       
       
       
        <div id="mydiv">aaa</div>
        <p>Total number of phones: {{phones.length}} </p>
        <p>Angulars Templates - http://docs.angularjs.org/tutorial/step_02</p>

 <p>Nothing here {{'yet' + '!'}}</p>
 
 <p>1 + 2 = {{ 1 + 2 }}</p>
 
 <p class="hello">{{hello}}______</p>
    </body>
</html> 

* main.js - require.js에서 사용함. 

 require(["jquery"], function($) {
  $("#mydiv").html("Hello this is RequireJS talking");
});


require(["jquery", "jquery.alpha", "jquery.beta"], function($) {
    //the jquery.alpha.js and jquery.beta.js plugins have been loaded.
    $(function() {
        $('body').alpha().beta();
    });
});

// angular.JS, controllers.js 를 LOAD.
require(["angular"], function($) {

});
require(["controllers"], function($) {

});

* controllers.js - angular.js에서 사용 

 function PhoneListCtrl($scope) {
  $scope.phones = [
    {"name": "Nexus S",
     "snippet": "Fast just got faster with Nexus S.",
     "age": 0},
    {"name": "Motorola XOOM™ with Wi-Fi",
     "snippet": "The Next, Next Generation tablet.",
     "age": 1},
    {"name": "MOTOROLA XOOM™",
     "snippet": "The Next, Next Generation tablet.",
     "age": 2}
  ];
 
  $scope.orderProp = "age";  
  $scope.hello = "Hello, world!"; 
}

 

TO-BE

* index.html 에 다 순차적으로 호출하였다.(require.js 사용안함) 

 <!doctype html>
<html lang="en" ng-app>
    <head>
        <title>jQuery+RequireJS Sample Page</title>
        <!-- This is a special version of jQuery with RequireJS built-in -->
        <script src="scripts/angular.js" ></script>
      <script src="scripts/controllers.js"></script>
      <script src="scripts/jquery-1.5.2.min.js"></script>
      <script src="scripts/jquery.alpha.js" ></script>
      <script src="scripts/jquery.beta.js" ></script>
        <script>        
         $(document).ready(function(){
             $("#mydiv").html("Hello this is RequireJS talking");
             $('body').alpha().beta();
         });
   
        </script>
    </head>
    <body ng-controller="PhoneListCtrl" >
        <h1>jQuery+RequireJS Sample Page</h1>
        <p>Look at source or inspect the DOM to see how it works.</p>
       
       
       
        <div id="mydiv">aaa</div>
        <p>Total number of phones: {{phones.length}} </p>
        <p>Angulars Templates - http://docs.angularjs.org/tutorial/step_02</p>

 <p>Nothing here {{'yet' + '!'}}</p>
 
 <p>1 + 2 = {{ 1 + 2 }}</p>
 
 <p class="hello">{{hello}}______</p>
    </body>
</html>

 

 

 

 

 

 

반응형
반응형

 

RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code.

 

http://requirejs.org/

 

 

프로젝트에 require.js와 main.js 파일이 필요하다.

아래에서 main.js를 호출하는 구문이다.

<script src="require.js" data-main="main"></script>

main.js( data-main="main" )에 로드할 JSLibrary와 해당 JSLabrary의 구문을 입력하면 된다.

아래에는 "jquery.js" 가 있어야 실행이 된다.

require(["jquery"], function($) {
  $(‘#mydiv”).html(‘Hello this is RequireJS talking”);
});

 

** Optimize your JavaScript with RequireJS

http://www.webdesignerdepot.com/2013/02/optimize-your-javascript-with-requirejs/

 

 

IE 6+ .......... compatible ✔
Firefox 2+ ..... compatible ✔
Safari 3.2+ .... compatible ✔
Chrome 3+ ...... compatible ✔
Opera 10+ ...... compatible ✔

Get started then check out the API.

 

require.js 2.1.4MinifiedWith Comments

All you need to start using require.js in the browser.

Sample RequireJS 2.1.4 + jQuery 1.9.1 projectDownload

A zip file containing a sample project that uses jQuery and RequireJS.

r.js: Optimizer and Node and Rhino adapterDownload

The r.js file allows you to run the optimizer as well as run modules in Node or Rhino.

If you are running in Node, and want to use npm to install this file via npm, see the Use with Node page for more information.

For information on its use, as well as how to get the JAR files to run it under Rhino, see the r.js README.

Plugins§ 2

These are useful loader plugins that have the same license terms as require.js itself. Download the plugin file and place it as a sibling to your "data-main" main.js script.

textDownload

Load text files and treat them as dependencies. Great for loading templates. The text strings can be inlined in an optimized build when the optimizer is used.

domReadyDownload

Wait for the DOM is ready. Useful for pausing execution of top level application logic until the DOM is ready for querying/modification.

cs (CoffeeScript)Download

Load files written in CoffeeScript. With this plugin, it is easy to code in CoffeeScript in the browser, it can participate in the optimizer optimizations, and it works in Node and Rhino via the RequireJS adapter. This is the best way to do cross-environment, modular CoffeeScript. The project home has more information on how to install and use it.

i18nDownload

Load string bundles used in internationalization (i18n) that are made up of separate country/language/locale-specific bundles.

반응형
반응형

Modularized JavaScript with JBoss Portal Platform 6 – Avoid Conflicts, Promote Re-usability

http://howtojboss.com/2013/02/05/modularized-javascript-with-jboss-portal-platform-6-avoid-conflicts-promote-re-usability/

 

JBoss Portal Platform 6

JBoss Portal Platform 6 Beta is now available.
http://www.redhat.com/promo/jpp6/

Many new features are documented there:

  • Built on blazingly fast, lightweight JBoss Enterprise Application Platform 6 technology
  • Develop with JSF2 and Rich Faces 4 in portlets, via Portlet Bridge
  • Implement single sign-on (SSO) using SAML 2.0
  • Launch fast with Maven quick starts

Portlet and JavaScript

However, to developers and architects, one of the first issues and most difficult issue we face in any portal implementation is – what are the best practices to use JavaScripts in a portal platform?

Imagine if you have 2 portlets both using a shared JavaScript, such as jQuery – how would you share the JavaScript between the 2 portlets?

  • Each Portlet include its own
    • This is largely a no-no.  If each portlet include its own jQuery in a <script> tag, they’ll most likely run into conflicts or unnecessarily reload a script already loaded.
  • Deploy a single version
    • Then what if you need multiple versions?
    • What if some portlets needs a different version of the JavaScript library?

Now, expand this dilemma to not just common JavaScripts libraries, but to all of your application’s JavaScripts!

Oh, and don’t forget, you may also want to minify and combine scripts to reduce latency, to be Content Delivery Network (CDN) friendly, and ultimately, to improve your customer’s browsing  experience.

반응형
반응형

[출처]

http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=41825
http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=42062

 

[마소연재] 페이스북 웹앱 만들기

 

1회 : 2013.01 | 페이스북 앱 기본 설정

2회 : 2013.02 | 페이스북 PHP/자바스클비트 SDK 사용

3회 : 2013.03 | 페이스북 웹앱 완성 및 광고 설정

 

 

1.페이스북 개발자 페이지에 접속 - http://developers.facebook.com/

 

2.페이스북 개발자 등록

  : 페이지 상단의 "APP" 메뉴를 선택하면 등록된 정보를 볼 수 있다.

 

3.페이스북 앱 생성

  : "새 앱 만들기" 버튼을 선택하고, "계속하기"를 누르면 헤로쿠(Heroku)와 관련된 기본적인 설정 페이지가

      보인다. 헤로쿠를 사용하지 않느다고 선택하면 바로 앱설정 페이지로 넘어간다.

     헤로쿠 호스팅 설정 페이지에서는 서버사이드 개발에 사용할 언어 설정과 이메일 주소를 입력한다.

     서버사이드 개발언어로는 PHP를 사용하고, 이메일 주소에는 사용 중인 헤로쿠 계정이있다면

     헤로쿠 계정을 적고 계정이 없는 경우에는 헤로쿠에서 사용할 이메일 주소를 입력하면

     해당 이메일주소로 회원가입 메일이 온다.

 

     * 헤로쿠 : PaaS기반의 클라우드 서비스 플랫폼이다. 별도 호스팅 절차없이 페이스북 앱을

                     PHP,Ruby,Node.js,Python으로 개발할 수 있다.

 

# 새 앱 만들기 옵션 

 App Name

 3~32 글자 제한이며 외부에 노출될 때 보이는 앱의 제목이다.

 App Namespace

 앱의고유 ID로 앱으로 접속 시 고유 URL 주소로 사용된다.

선택사항이지만 캔버스 앱에서 URL로 쓰이므로 처음부터 설정하는 쪽이 편하다.

 Locale

 앱에서 사용할 언어를 선택한다.

특정 조건에서는 보이지 않기도 하지만 앱 설정에서 다시 설정할 수 있으니

걱정하지 말자.

 Web Hosting

 웹호스팅 서비스 헤로쿠를 사용할 것인지 묻는 항목이다.

헤로쿠를 사용하면 기본적으로 URL 설정과 SSL을 바로 제공하므로 서버 셋팅에 큰 시간을 들일 필요가 없다.

 

======================================================================================================

1.페이지 생성

  : 페이지 생성 주소 - http://www.facebook.com/pages/create.php

    * 페이지 탭 앱 등록방법 : http://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&next=YOUR_URL

 

헤로쿠를 사용하면 페이스북 웹앱 개발이 빠른 이유 

  •  페이스북 앱에서 헤로쿠 연동을 처음부터 제공해주기 때문에 서버 구성에 드는 시간이 최소화된다.
  • 페이스북 앱에서 권장하는 SSL 설정을 바로 제공해죽 때문에 많은 비용과 시가니 소모되는 SSL 설정 작업을 적용 시간과 비용으로 구축 할 수 있다.
  • 페이스북 앱을 만드는 데 필요한 PHP, javascript 등의 좋은 예제 코드를 기본 페이지를 통해 제공한다. 해당 코드들은 향후 페이스북 앱 개발에 있어 많은 도움이 된다.

 

* 헤로쿠 개발 구축 환경

헤로쿠 툴밸트를 사용해 계정 로그인용 인증키를 받고, 이를 사용해 소스를 관리하고 배포할 수 있다. (윈도우용 헤로쿠 인스톨러에는 Git가 포함돼있다. )

 기존 Git을 설치해 사용하고 있었다면 Git 설치 옵션을 제히하고 설치해야 한다.

 만약 Git를 다시 설치한다면 기존의 모든 설정이 초기화되고 SSH키값이 모두 사라진다.

 

 헤로쿠 툴밸트를 모두 설치했다면 커맨드라인에 'herokulogin'을 입력하고 헤로쿠 계정으로 로그인할 수 있다.

그 후 Git를 통해 소스를 다운로드 할 수 있다.

설정이 모두 정상적으로 이루어 졌는지 확인하기 위해 다운로드한 소스중에서 index.php 파일을 수정해보자.

바꾸고 Commit후에 Push하면 페이스북 앱에 바로 적용된다.

Git의  master branch의 최신 데이터로 앱을 배포한다는 것을 알 수 있다.

 

 

* 헤로쿠 개발환경 개선

 로컬PC에서 웹서버를 설치하고 PHP를 구동하자 - www.apmsetup.com

 로컬서버의 루트폴더에 Git로 헤로쿠에서 받아온 파일을 넣는다.

 http://localhost  로  구동시 설정 문제가 있다.

 

1. 페이스북 PHP SDK 사용에 필요한 '/sdk' 폴더가 없다.

   - Facebook SDK for PHP를 페이스북 개발자 페이지에서 다운로드하고,

      로컬 테스트 서버 환경의 웹 루트 하우에 '/sdk/src/facebook.php' 가 위치하도록 설치한다.

 

2. cURL 기능이 필요하다.

   - PHP에 cURL 기능이 있는지 phpinfo()로 확인하고 없으면 설치한다.

 

3.App ID, App Secret Code가 없다.

   - /Appinfo.php 파일에서는 App ID와 App Secret Code의 설정에 getenv() 함수를 사용하고 있다.

     이와 같은 헤로쿠 서버의 정보는 http://phpinfo.herokuapp.com 을 통해 확인할 수 있다.

 

로컬 테스트 서버 환경에 설치된 아파치에도 헤로쿠와 동일하게 App ID와 App Secret Code를 설정하기 위해 httpd.conf 파일 아래에 다음의 텍스트를 추가한다.

 

<VirtualHost *:80>

DocumentRoot (설치경로)

ServerName 127.0.0.1

SetEnv FACEBOOK_APP_ID (APP_ID)

SetEnv FACEBOOK_SECRET (SECRET)

</VirtualHost>

 

이렇게 마치면 로컬 서버 환경에서도 헤로쿠와 동일한 페이지가 출력된다. 하지만 페이스북앱의 도메인 퍼미션 때문에 로그인 버튼이 동작하지 않는다. 이를 해결하기 위해서는 페이스북 앱 설정 페이지에 있는 'Website with facebook login'에 http://127.0.0.1 을 추가해 로컬 테스트 서버 환경에 접근 권한을 주면 된다.

 

마지막으로 로컬 서버에서 개발한 것을 Git에 커밋하고 Push할 때 '/sdk' 폴더를 포함시키지 않도록 주의해야 한다. 헤로쿠 서버의 '/sdk' 폴더 내의 내용을 최신 페이스북 PHP SDK 로 관리해주기 때문이다. 또한 로컬 환경에서 동작했던 값이 그래도 헤로쿠 환경에 적용될 수 있도록 버전(PHP의 경우 'phpinfo()'한수로 확인 가능)관리에 신경 쓰자.

 

** 마소지 2013.01 참고 **

 

 

* 페이스북 자바스크립트 SDK

 : http://developers.facebook.com/docs/reference/javascript/

 

* 페이스북 Dialog

 : http://developers.facebook.com/docs/reference/dialogs/

 

* 페이스북 FQL(Facebook Query Language)

 : http://developers.facebook.com/docs/reference/fql/

 

* 페이스북 그래프 API

 : http://developers.facebook.com/docs/reference/api/

 

* Facebook SDK for PHP

 : http://developers.facebook.com/docs/reference/php/

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

Beginner HTML5, JavaScript, jQuery, Backbone, and CSS3 Resources

http://www.elijahmanor.com/2013/01/beginner-html5-javascript-jquery.html

 

html5 Resources

Javascript Resources

Jquery  Resources

 

Backbone.js  Resources

CSS3  Resources

Feature detection   Resources

Responsive web design  Resources

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

angular.js

 

HTML enhanced for web apps!

 

jquery보다 훨씬 동적이면서 구문에 자유로운 구현이 가능하다.

확장성이 높아서 웹앱을 제작하는데 있어서 동적구현이 가능하다.

 

 

AngularJS 시작하세요.
http://angularjs.org


github : https://github.com/angular/angular.js

Tutorial : http://docs.angularjs.org/tutorial/

Download : http://code.angularjs.org/

Video : http://www.youtube.com/user/angularjs

 

AngularJS lets you write client-side web applications as if you had a smarter browser. It lets you use good old HTML (or HAML, Jade and friends!) as your template language and lets you extend HTML’s syntax to express your application’s components clearly and succinctly. It automatically synchronizes data from your UI (view) with your JavaScript objects (model) through 2-way data binding. To help you structure your application better and make it easy to test, AngularJS teaches the browser how to do dependency injection and inversion of control. Oh yeah and it also helps with server-side communication, taming async callbacks with promises and deferreds; and make client-side navigation and deeplinking with hashbang urls or HTML5 pushState a piece of cake. The best of all: it makes development fun!

 

 

 

반응형

+ Recent posts