초보자를 위한 NodeJs 및 Express with Typescript. 쉬운 단계.
11856 단어 expressnodetypescriptes6
TypeScript는 대규모 JavaScript 프로젝트를 구축하고 관리하는 데 도움이 되는 유형이 지정된(선택 사항) JavaScript 상위 집합입니다.
strong static typing
, compilation
, object-oriented programming
및 interfaces
사용 기능과 같은 추가 기능이 있는 JavaScript로 생각할 수 있습니다.이후 Typescript는 앱 코드를 더 많이 만드는 객체 지향 언어입니다
consistent, clean, simple, testable and reusable
. 따라서 대규모 프로젝트를 개발할 때는 TypeScript를 사용하는 것이 좋습니다.이제 다이빙하자
단계
npm install -g typescript
NodeTypescript
라는 폴더를 만듭니다. cd NodeTypeScript
For those using vscode, you can use the command line in vscode, so you don't need to do the step above
NB.
tsc
it's used to compile from typescript to javascript.
tsc --init
NB
At default, the target is ES5, which is deprecated at the moment, ES5 uses
var
, while ES6+ useslet
andconst
- change the target from
es5
toes6
in tsconfig.json- uncomment the
outDir
and set it to dist. Note this is where we want our complied version to go to.- uncomment the
rootDir
and set it to dist. Note this is where our typescript files will be stored.- uncomment
moduleResolution
폴더
scr
를 만든 다음 이전에 만든 app.ts를 해당 폴더로 이동합니다.tsconfig.json
{
"compilerOptions": {
/* Basic Options */
// "incremental": true, /* Enable incremental compilation */
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
// "lib": [], /* Specify library files to be included in the compilation. */
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
// "declaration": true, /* Generates corresponding '.d.ts' file. */
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
// "sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "./dist", /* Redirect output structure to the directory. */
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
// "removeComments": true, /* Do not emit comments to output. */
// "noEmit": true, /* Do not emit outputs. */
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* Enable strict null checks. */
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
/* Additional Checks */
// "noUnusedLocals": true, /* Report errors on unused locals. */
// "noUnusedParameters": true, /* Report errors on unused parameters. */
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
/* Module Resolution Options */
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
// "types": [], /* Type declaration files to be included in compilation. */
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
/* Source Map Options */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
/* Advanced Options */
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
}
}
npm init --y
npm i express
npm i D typescript ts-node nodemon @types/node @types/express
start
, dev
및 build
를 추가합니다.start
이렇게 하면 컴파일 폴더가 시작됩니다.dev
이렇게 하면 typescript 파일이 시작됩니다.build
이것은 typescript 파일을 컴파일하고 dist에 저장합니다. 패키지.json
"scripts": {
"start": "node dist/app.js",
"dev": "nodemon src/app.ts",
"build": "tsc -p ."
},
import express from 'express';
const app = express();
app.get('/', (req, res) => {
res.send('hello');
});
const PORT = 3000;
app.listen(PORT, () => console.log(`Server Running on port ${PORT}`));
이것은 이 서버를 실행하기 위해 포트 3000에서 실행됩니다. 아래 코드를 사용하십시오
npm run dev
참고: 이렇게 하면 src 폴더에 있는 typescript 파일이 실행됩니다.
import express, { Application, Request, Response, NextFunction } from 'express';
const app: Application = express();
app.get('/', (req: Request, res: Response, next: NextFunction) => {
res.send('hello');
});
const PORT = 5000;
app.listen(PORT, () => console.log(`Server Running on port ${PORT}`));
WOOOOW.. 드디어 엔딩에서
npm run build
이렇게 하면
src
폴더의 모든 파일이 컴파일된 다음 dist
폴더에 덤프됩니다.우리가 실행할 마지막 명령은
npm start
그러면
dist
폴더의 파일이 실행됩니다.공유하는 것을 기억해주세요. ❤️❤️❤️
Reference
이 문제에 관하여(초보자를 위한 NodeJs 및 Express with Typescript. 쉬운 단계.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/weezykon/nodejs-and-express-with-typescript-for-beginners-easy-steps-3121
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(초보자를 위한 NodeJs 및 Express with Typescript. 쉬운 단계.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/weezykon/nodejs-and-express-with-typescript-for-beginners-easy-steps-3121텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)