Go 언어~WEB 어플리케이션 개발편~

9574 단어 Go

입문


안녕하세요.나는 모 학교에서 프로그래밍 등을 배우는 서버 분야의 프로그래머다.
그럼 이번에는 3, 4회 정도로'Go 언어 열심히 배웠어요~ WEB 앱 개발편~'을 소개합니다.
그럼 바로 가보겠습니다

가져오기


패키지의 를 가져옵니다.

서버 시작


net/http의 ListenAndServe()를 사용합니다.
http.ListenAndServe("サーバ名:ポート番号", ハンドラ)
*첫 번째 파라미터의 서버 이름을 생략하면localhost입니다.
*두 번째 매개 변수는 통상적으로nil일 수 있다.

HTML 파일 읽기


net/http의 Handle()을 사용합니다.
http.Handle("アクセス先ルート", http.FileServer(http.Dir("読み込むHTMLファイルのディレクトリ名")))
<다음 예제>
○ static 디렉토리의 HTML 파일 읽기
< 디렉토리 구조>
 |-static
 |  |- index.html
 |-server.go
server.go
func main() {
    http.Handle("/", http.FileServer(http.Dir("static"))))
    http.ListenAndSeave(":9999", nil)
}
http://localhost:9999static 디렉터리의 index에 접근합니다.html로 불리다.

템플릿 파일 작업


정적 페이지가 아닌 Go로 동적 페이지를 만들 때 사용

가져오기


패키지의 <"html/template>를 가져옵니다.또는 <텍스트/텍스트>를 가져옵니다.
*text/template: 일반 템플릿용 패키지입니다.
*html/template: 자리 차지 문자열로 변환할 html 라벨을 자리 차지 문자열로 변환합니다.

템플릿 파일의 위치 지정

path, _ := os.Getwd()//カレントディレクトリの取得(osパッケージをインポート)
t := template.Must(template.ParseFiles(path + "テンプレートファイルのある所のパス"))

템플릿 그리기

t.ExecuteTemplate(http.ResponseWrite, "テンプレートファイル名", 送る値)

등록 프로세서


net/http 패키지의 HundleFunc()를 사용합니다.
http.HandleFunc("アクセス先ルート", クロージャ)

func クロージャ(w http.ResponceWrite, r *http.Request {
   //アクセス先ルートにアクセスされたときに実行する事を記述
}

템플릿 파일 값 표시 (동작 표시)

  • 템플릿에 전달되는 매개변수 내보내기
  • {{ . }}
    
  • 템플릿에 전달되는 값은 구조
  • {{ .構造体のフィールド名 }}
    
  • 조건 브랜치
  • {{ if .(構造体のフィールド名) }}
    
    {{ else }}
    
    {{ end }}
    
  • 순환
  • {{ range .(構造体のフィールド名) }}
    
    {{ else }}
    
    {{ end }}
    
    *전달된 매개 변수는 배열이나 절단 등 배열 시스템만 전달할 수 있다
  • 템플릿에 전달되는 매개 변수가 비어 있지 않으면 처리 1
  • 템플릿에 전달되는 매개 변수가 비어 있지 않으면 처리 1이 비어 있으면 출력 처리 2입니다.
  • {{ with .(構造体のフィールド名) }}
       //処理1
    {{ else }}
       //処理2
    {{ end }}
    
    <다음 예제>
    ○static 디렉터리의 템플릿 파일 읽기
    < 디렉토리 구조>
     |-static
     |  |- index.html.tpl
     |-server.go
    server.go
    func clockHandler(w http.ResponseWriter, r *http.Request) {
        path, _ := os.Getwd()
        t := template.Must(template.ParseFiles( path + "/static/index.html.tpl"))
    
    
        if err := t.ExecuteTemplate(w, "index.html.tpl", time.Now()); err != nil {
             log.Fatal(err)
        }
    }
    func main() {
        http.HandleFunc("/", clockHandler)
        http.ListenAndSeave(":9999", nil)
    }
    
    index.html.tpl
    <!DOCTYPE html>
    <html>
    <body>
    今現在{{ .Hour }}時{{ .Minute }}分です。
    </body>
    </html>
    
    http://localhost:9999static 디렉터리의 index에 접근합니다.html로 불리다.
    이상
    무슨 잘못이 있으면 연락 주세요.
    끝까지 읽어줘서 고마워요.
    다음에'Go 언어 열심히 배웠어요~ WEB 앱 개발편②~'
    가능하다면 이쪽을 보세요.
    "고언어~기본문법편①(변수, 상수, 조건분지, 중복처리)~"에 대해여기부터.
    Go언어~기본문법편②(배열)~에 관하여여기부터.
    Go언어~기본문법편③(함수)~에 관하여여기부터.
    "Go언어~기본문법편④(지침, 구조체)~를 열심히 배웠습니다"에 대해서는 여기를 참조하십시오.
    '고어학~포장편~'에 대해여기부터.
    "고언어~데이터베이스 연결(MySQL)편을 열심히 배웠어요~"에 대해여기부터.

    추가 기록(2018/10/20)


    추가 동작 표시

  • 변수의bool값에 대해 not 연산
  • {{ not 引数 }}
    
  • 매개 변수 1과 매개 변수 2로 and 연산
  • {{ and 引数1 引数2 }}
    
  • 매개 변수 1과 매개 변수 2로 or 연산
  • {{ or 引数1 引数2 }}
    
  • 이스케이프 매개변수
  • {{ html 引数 }}
    
  • 템플릿 변수
  • {{ $変数名 := 値 }}
    
  • 템플릿에 전달되는 매개 변수 그룹에서 크기를 되돌려줍니다
  • {{ len 引数 }}
    

    좋은 웹페이지 즐겨찾기