Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Full-stack with nest js & angular 8

NotificationsYou must be signed in to change notification settings

yantrab/nest-angular

Repository files navigation

nest-angular-starter

This is a repo for a starter appliation for a Single Page MEAN Stack applicationincludes nest js + fastify + http2 + angular 7 + angular material + client api generator.

Installation

git clone https://github.com/yantrab/nest-angular.gitcd .\nest-angularnpm i

To use ssl with localhost, open cmd one level above the root and run:

choco install mkcertmkcert localhostmkcert -install

debug server

npm run debug-server

build client

npm run build-client

Run both server&client

npm run dev

Hit F5 and select the process

client api generator

server controller:

@Controller('rest/auth')exportclassAuthController{    @Post('login')asynclogin(@Body()user:LoginRequest, @Req()req):Promise<User>{returnreq.user;}    @Get('getUserAuthenticated')asyncgetUserAuthenticated(@Req()req):Promise<{user:User}>{return{user:req.user};}}

run

npm run gen-client

result:

@Injectable()exportclassAuthController{asynclogin(user:LoginRequest):Promise<User>{returnnewPromise(resolve=>this.api.post('rest/auth/login',user).subscribe((data:any)=>resolve(plainToClass(User,<User>data))),);}asyncgetUserAuthenticated():Promise<{user:User}>{returnnewPromise(resolve=>this.api.get('rest/auth/getUserAuthenticated').subscribe((data:any)=>resolve(data)));}constructor(privatereadonlyapi:APIService){}}

Cordova

cd clientnpm run cordova:initnpm run build:prod:cordovanpm run cordova:run:browser

class-transformer

User class

exportclassUserextendsEntity{fName:string;lName:string;roles:Role[];getfullName(){returnthis.fName+' '+this.lName;}}

By usingclass-tranformer (auto generate), you can do:

this.authService.login(this.form.value).then(user=>{console.log(user.fullName);});

Shared validation usingclass-validator

decorate the class with validations:

exportclassLoginRequest{    @IsEmail()email:string    @Length(6,10)password:string}})

server validation

just usevalidation pipe

client validation

constructor(privatedynaFB:DynaFormBuilder){this.dynaFB.buildFormFromClass(LoginRequest).then(form=>this.form=form);}

polymorphism

By inheritance from Poly class you can do the next thing:

// Class declerationexportabstractclassFilterextendsPoly{}exportclassCheckboxFilterextendsFilter{}exportclassDropdownFilterextendsFilter{} @Component({selector:'mf-root',template:`  <div fxLayout='column' fxFlex='200px'>    <p-filter [filter]="filter1"></p-filter>    <p-filter [filter]="filter2"></p-filter>  <div>  `,styles:[]})exportclassMFComponent{  filter1:Filter;  filter2:Filter;constructor(){this.filter1=newCheckboxFilter({options:[{_id:'1',name:'name1'},{_id:'2',name:'name2'}],selected:{_id:'2',name:'name2'}});this.filter2=newDropdownFilter({options:[{_id:'1',name:'name1'},{_id:'2',name:'name2'}],selected:{_id:'2',name:'name2'}});}}

Future

-- Client generator with full types.

-- Auto transform result to real object

-- Share models between server & client

recomended vscode extensions

  1. Angular Language Service
  2. angular2-inline
  3. SCSS Formatter
  4. TSLint

First deploy

sudo apt-get updatesudo apt-get install gitsudo apt-get install nodejssudo apt-get install npmgit clonehttps://github.com/yantrab/nest-angular.git

//DBhttps://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-debian-9

sudo ufw allow from 62.219.113.155/32 to any port 27017sudo ufw allow from 10.110.0.3/32 to any port 27017sudo iptables -A INPUT -s 188.64.207.118 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPTsudo iptables -A OUTPUT -d 188.64.207.118 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPTsudo systemctl restart mongod

echo "export const macroConf = {db: {user: '?',password: '?',server: '?',database: '?',debug: false,max: 500,min: 0,idle: 5000,acquire: 20000,evict: 30000,handleDisconnects: true,connectionTimeout: 300000,requestTimeout: 300000,}};" > config.ts

##Depolyadduser yanivusermod -aG sudo yanivapt updateapt install ufwufw allow OpenSSHufw enableufw statusssh yaniv@your_server_ip

sudo apt updatesudo apt install nginxsudo ufw allow 'Nginx HTTP'sudo ufw statussystemctl status nginx

sudo apt install curlcurl -sLhttps://deb.nodesource.com/setup_10.x -o nodesource_setup.shsudo bash nodesource_setup.shsudo apt install nodejssudo apt install gitgit config --global user.name "yantrab"git config --global user.email "yantrab@gmail.com"mkdir tadorcd tadorgit clonehttps://github.com/yantrab/nest-angular.gitcd nest-angularnpm i

// copy dist from windows

scp -r dist yaniv@128.199.41.162:/home/yaniv/tador/nest-angular/clientscp -r dist yaniv@178.62.237.25:/home/yaniv/tador/nest-angular/client

sudo npm install pm2@latest -gcd serverpm2 start npm -- startsudo nano /etc/nginx/sites-available/default

server {...location / {proxy_passhttp://localhost:4200;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}...}

sudo systemctl reload nginx

Releases

No releases published

Packages

No packages published

Contributors3

  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp