Hướng dẫn duùng yeoman tạo project angular

Yeoman generator for creating MEAN/SEAN stack applications, using ES2017, MongoDB/SQL, Express, Angular, and Node - lets you quickly set up a project following best practices.

Install yo, gulp-cli, and generator-angular-fullstack:

npm install -g yo gulp-cli generator-angular-fullstack

Please note: If you run into trouble compiling native add-ons during the installation, follow node-gyp's short guide on .

Then, to run your app (make sure the MongoDB daemon is running if you selected Mongo), run the following to start your server:

and the following to start the Webpack dev server for the front-end:

The Webpack server will tell you which port to access the app at (usually http://localhost:8080/).

Run yo angular-fullstack

See the Getting Started guide for more information.

  • MongoDB - Download and Install - If you plan on scaffolding your project with mongoose, you'll need mongoDB to be installed and have the mongod process running.
    • If you have Docker installed, you can easily run a test database with docker run -p 27017:27017 --name afs-mongo -d mongo
  • The project's JavaScript is written in ECMAScript 2015. If you're unfamiliar with the latest changes to the specification for JavaScript, check out http://es6-features.org/

General

  • Build Systems: Gulp
  • Testing:
    • Jasmine
    • `yo`0
      • Chai assertions:
        • `yo`1
        • `yo`2

Client

  • Scripts: `yo`3, `yo`4
  • Module Systems: `yo`5
  • Markup: `yo`6, `yo`7
  • Stylesheets: `yo`8, `yo`9, `gulp-cli`0, `gulp-cli`1
  • CSS Frameworks: `gulp-cli`2
    • Option to include `gulp-cli`3

Server

  • Scripts: `yo`3, `yo`4 (planned)
  • Database:
    • `gulp-cli`6,
    • `gulp-cli`7, `gulp-cli`8
      • Authentication boilerplate: `gulp-cli`9, `generator-angular-fullstack`0
      • oAuth integrations: `generator-angular-fullstack`1, `generator-angular-fullstack`2, `generator-angular-fullstack`3
      • Socket.io integration: `gulp-cli`9, `generator-angular-fullstack`0

Available generators:

  • App
    • angular-fullstack (aka angular-fullstack:app)
  • Server Side
    • angular-fullstack:endpoint
  • Client Side (via generator-angular-fullstack-component)
    • angular-fullstack:route
  • To be re-updated:
    • angular-fullstack:component
    • angular-fullstack:controller
    • angular-fullstack:filter
    • angular-fullstack:directive
    • angular-fullstack:service
    • angular-fullstack:provider
    • angular-fullstack:factory
    • angular-fullstack:decorator
  • Deployment
    • angular-fullstack:openshift
    • angular-fullstack:heroku

Check out our documentation home page.

See the contributing docs

When submitting an issue, please follow the . Especially important is to make sure Yeoman is up-to-date, and providing the command or commands that cause the issue, as well as any stack traces.

Angular2 hiện tại vẫn đang trong giai đoạn Developer Preview tuy nhiên mình sẽ bắt đầu tìm hiểu trước cho đến khi nó được release thì dùng luôn. Hiện tại trên trang của Angular2 thấy chúng ta có thể code bằng Javascript, TypescriptDart, nhưng xem qua các bài hướng dẫn thì mọi người có vẻ dùng Typescript phổ biến hơn. Nên mình cũng sẽ làm quen với Angular2 bằng Typescript luôn.

Trong phần làm quen này, chúng ta cùng nhau viết ứng dụng vô cùng đơn giản coi như để biết được Angular2 là cái gì, và viết nó như thế nào. Một ứng dụng Hello World.


Lowdb - DB không cần server

Từ yêu cầu cá nhân, mình cần tạo một server API giả bằng nodejs để phục vụ cho việc làm frontend. Mình có ý muốn tìm một thư viện DB nhỏ gọn, dễ cài đặt sử dụng, hỗ trợ JSON, chỉ dựa trên file text đơn giản, chứ không cần phải cài đặt server như mongoDB và nếu thao tác giống như mongoDB thì tốt.

Sau một hồi dạo quanh thì mình đã tìm thấy LowDB

Need a quick way to get a local database?

Import mysql từ file zip

Vừa rồi mình phải import dữ liệu mysql từ một file zip khoảng 700MB nhưng khi giải nén ra thì đến 4GB lận. Để import quả là không đơn giản. Và rồi cũng đã tìm được 1 cách import với chỉ 1 câu lệnh:

1

unzip -p dbdump.sql.zip | mysql -u root -p dbname

  • Câu lệnh này chỉ thực hiện được với điều kiện file zip của bạn chỉ có 1 file sql.
  • Thay unzip -p dbdump.sql.zip | mysql -u root -p dbname 0 bằng user mysql của bạn
  • Thay unzip -p dbdump.sql.zip | mysql -u root -p dbname 1 bằng tên của DB
  • Nhập password vào và chờ kết thúc.

Cách này mình tìm được từ đây: http://snippets.khromov.se/import-zipped-mysql-dumps/


Tạm biệt wordpress xin chào hexo

Như vậy là sau vài lần tìm kiếm và thử nghiệm, cuối cùng cũng đã tìm ra một cách viết blog mới để thay thế cho em wordpress. Với sở thích đơn giản, thích nghịch ngợm nên với mình wordpress tỏ ra cồng kềnh nhiều tính năng không dùng đến. Mình muốn một cách viết blog đơn giản như là dùng markdown để viết, không cần dùng cơ sở dữ liệu, tận dụng được hosting đang có.


Xử lý hình ảnh hiển thị sai hướng bằng cách xác định giá trị EXIF orientation

Trong thời gian này mình có làm một ứng dụng chat, trong đó có tính năng upload file và hình ảnh. Và mình đã gặp một vấn đề với các hình ảnh được chụp bằng điện thoại. Đó là hình ảnh bị hiển thị sai hướng, do khi chụp người dùng đã để dọc điện thoại, dẫn đến lúc hiển thị hình ảnh trên trang web, thay vì hình ảnh hiển thị thẳng đứng thì lại nằm ngang. Giống như thế này:

Hướng dẫn duùng yeoman tạo project angular

Và công việc của mình là phải xác định được, hình ảnh đó bị sai thế nào, để hiển thị lại cho đúng.


Khởi tạo dự án AngularJS với generator-boom

Khi bắt đầu một dự án AngularJS chúng ta có rất nhiều việc phải làm như tạo cấu trúc thư mục, viết code để tự động build các file js, css, chuẩn bị code để test… Dĩ nhiên ta có thể tự mình lần lượt làm các việc đó, hoặc như trước đây, tôi tạo sẵn một thư mục dự án mẫu rồi khi nào dùng sẽ copy qua dùng lại. Tuy nhiên vẫn tốt hơn nếu như có một công cụ giúp mình làm các việc kể trên, và trong bài này tôi giới thiệu đến các bạn công cụ generator-boom, một công cụ sinh code AngularJS dành cho Yeoman.

Cài đặt generator-boom


Build your code with Gulp

Gulp is the streaming build system. Gulp’s use of streams and code-over-configuration makes for a simpler and more intuitive build. I didn’t use Gulp or Grunt before. Today, I hear about it and decide to use it on my project. What I write here is not a tutorial, it just what I do with Gulp.

1. Install – NodeJS - Gulp:

To install Gulp we must have node installed. Nodejs can be installed from here http://nodejs.org/

– Gulp: We should install gulp globally

1

$ npm install -g gulp

2. Using Gulp in project First, jump to your project folder.


Quản lý các gói thư viện phía client site bằng Bower

Thời gian trước, có người nói với tôi rằng nên sử dụng Bower để cài đặt những gói thư viện js, css phía client site của một plugin tôi đang phát triển. Tôi cũng chỉ ậm ừ qua, và nghĩ rằng không cần thiết lắm bởi vì hiện tại những thư viện đó vẫn đang chạy tốt.

Vậy tại sao hôm nay tôi lại giới thiệu về bower cho các bạn, đơn giản vì anh bạn đó của tôi đã sử dụng bower cho dự án của mình. Khi anh ta gởi source code cho tôi nó không hề có các thư viện nào như jquery, angulajs, boostrap… và anh ta bảo tôi cài vào đi.

Lúc đó tôi mới mày mò lên các trang web để tải về các thư viện từ jquery, angularjs, boostrap …. rồi copy nó vào thư mục code.

– Không! Không cần phải làm như vậy.

Anh ta nói. “Chỉ cần sử dụng bower install “. Và quả nhiên, bower đã tự động cài hết các gói thư viện cho tôi. Thật tuyệt vời!

Hướng dẫn duùng yeoman tạo project angular


Viết chức năng upload bằng ajax với jquery và javascript chay

Trong bài viết này, tôi sẽ chỉ ra hai cách để tạo ajax upload. Cách thứ nhất sử dụng Jquery cùng với plugin của nó và cách thứ hai dành cho bạn nào muốn mày mò vọc code để tự mình viết riêng phần upload chỉ dùng javacript. Ở bài viết này, tôi sử dụng PHP để viết phần server.


Bắt sự kiện kích chuột bên ngoài một phần tử và kiểm tra phần tử ẩn/hiện bằng JQuery

Ngày hôm nay, trong khi đang làm, tôi bắt gặp 2 trường hợp cần giải quyết với jquery. Trường hợp thứ nhất là bắt sự kiện khi người dùng kích chuột bên ngoài một phần tử và trường hợp thứ hai là kiểm tra một phần tử có đang hiển thị hay không.

Cách giải quyết hai trường hợp này cũng khá đơn giản, nhưng tôi nghĩ nõ cũng sẽ làm ta mất một số thời gian nếu như chưa biết. Vì vậy tôi sẽ chia sẽ hai thủ thuật này ở đây.