【Tencent Cloud Studio 実践トレーニングキャンプ】React で注文ページを素早く構築

序文:

Cloud Studio は、開発者がブラウザでアプリケーションを簡単に開発、テスト、デバッグ、デプロイできるようにするオンラインのクラウド統合開発環境 (IDE) です。コード エディター、コンパイラー、デバッガー、バージョン管理システム、プロジェクト管理ツールなどのクラウド ベースのコンピューティング リソースとツールを提供するため、開発者はローカルにソフトウェアをインストールすることなく、CloudStudio は、複数のクラウド コンピューティング プラットフォーム (AWS や Azure など) やその他の開発ツールを統合して、開発者がクラウド ネイティブ アプリケーションをより簡単に構築および展開できるようにすることもできます。

オンライン IDE として、Cloud Studio には、コードのハイライト表示、オートコンプリート、Git 統合、ターミナルなどの基本的な IDE 機能が含まれており、リアルタイム デバッグ、プラグイン拡張機能などもサポートしているため、開発者は開発を迅速に完了できます。 、さまざまなアプリケーションのコンパイル、展開。

オンラインIDEインターフェース

  公式サイト: https: //cloudstudio.net/

1. 操作ガイド

初心者にとって、製品ドキュメントは、製品の機能と使用法をより深く理解するのに役立ちます。CloudStudio の使用方法に慣れていないと、多くの問題が発生し、時間が無駄になる可能性があります。したがって、CloudStudio を使用する前に、製品ドキュメントを参照することをお勧めします。

さらに、製品ドキュメントには、ログインと登録、およびアプリケーション開発に関するさまざまな例と図が示されており、学習コストを大幅に削減し、より早く製品に慣れ、使いこなすことができるため、初心者にとって非常に役立ちます。 

製品ドキュメントを読んだ後、実践してみましょう。

2. Cloud Studio を使用して React を迅速に構築し、H5 ページの復元の注文を完了します

1. スペーステンプレートを使用する

スペース テンプレートをクリックし、すべてのテンプレートを選択して、下にスライドします。

React を検索:

 クリックすると次のように表示されます。数秒待ちます。

 スペースに入ると、何かがインストールされていることがわかりました。インストールされるのを待つだけです。

2. プロジェクトを初期化する

// 进入当前目录
cd ./ && 
// 设置port的环境变量
set port=3000 &&
// 导出port的环境变量
export PORT=3000 &&
// 相当于 yarn install,安装相关依赖
yarn &&
// 启动开发环境
yarn start --port=3000

わずか数分で、Java プロジェクト、Node.js プロジェクトなどの他のプロジェクト用にプロジェクトが初期化されます。ブラウザさえあれば環境の準備もソフトウェアのインストールも必要なく、インターネットに接続できさえすれば、数分でプロジェクトの初期化が完了するので非常に効率的です。新しい技術を学ぶため。

3. 依存関係をインストールする

1.antdモバイルをインストールする

$ yarn add antd-mobile@^5.32.0
# or
$ npm install --save antd-mobile@^5.32.0

 2. インストールの量を減らします:

(1). インストールするローダーの数を減らしていきます。

yarn add -D less@^3.12.2 less-loader@^7.0.1

(2). Webpack 設定ファイルを公開します。

webpack.config.js で構成します。この構成では React の構成構成ファイルを公開する必要があります。警告: この操作は元に戻すことができません。

npm run eject

 「y」を入力すると、プロジェクトが自動的に分解されます。

コマンドが完了すると、プロジェクトのルート ディレクトリに config フォルダーが表示され、このフォルダーにはいくつかの構成関連のスクリプトが含まれており、package.json には「dependency」などのさらに多くの属性値があることも確認できます。

config/webpack.config.js ファイルを見つけて、60 行目あたりを見つけます。これは、CSS の設定に関連するコードです。

 Sass コードをコピーして、less に変更します。

// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
// 新增加 Less 代码
const lessRegex = /\.(less)$/;
const lessModuleRegex = /\.module\.(less)$/;

 sass をさらに下方向に検索すると、位置は 504 行目あたりで、次のコードが見つかります。

 前の構成と同様に、sass の構成に従って構成を減らします。

// less
{
  test: lessRegex,  // 有改动
  exclude: lessModuleRegex,  // 有改动
  use: getStyleLoaders(
    {
      importLoaders: 3,
      sourceMap: isEnvProduction
        ? shouldUseSourceMap
        : isEnvDevelopment,
    },
    'less-loader'  // 有改动
  ),
  sideEffects: true,
},
{
  test: lessModuleRegex,  // 有改动
  use: getStyleLoaders(
    {
      importLoaders: 3,
      sourceMap: isEnvProduction
        ? shouldUseSourceMap
        : isEnvDevelopment,
      modules: {
        getLocalIdent: getCSSModuleLocalIdent,
      },
    },
    'less-loader'  // 有改动
  ),
},

 これで webpack.config.js でのlessの設定が完了し、プロジェクトでlessスタイルを使用できるようになります。

(3). 正規化をインストールします。

Normalize.css は、CSS リセットの最新の代替手段であり、デフォルトの HTML 要素のスタイル設定において、ブラウザー間での強力な一貫性を提供します。Normalize.css は、従来の CSS リセットに代わる最新の HTML5 対応のプレミアムな代替手段です。

yarn add -D normalize.css@^8.0.1

(4). プロジェクトのアップロードに必要な資料: 

以前は、サーバー コードをアップロードするには、Scp コマンドを使用するか、リモート SSH プラグイン サポートをインストールする必要がありました。Cloud Studio では、デフォルトでファイルのアップロードやダウンロードなどの日常的な操作を簡単にサポートでき、ローカル IDE エクスペリエンスと一致します。 :

  • ファイルを IDE 編集領域に直接ドラッグすることもできます (この記事で使用した方法)。
  • IDE編集エリアを右クリックして「アップロード」

img フォルダーを src ディレクトリにドラッグするだけです 。(クリックして img 圧縮パッケージをダウンロードします)

(5). App.js メイン ファイルを置き換えます。 

以下は注文システムの主要なビジネス コードです。これを src/App.js にコピーして直接置き換えます。

import './App.css';
import React, { useState } from 'react'
import { NavBar, Toast, Swiper, SideBar, TabBar, Badge } from 'antd-mobile'
import {
  AppOutline,
  ExclamationShieldOutline,
  UnorderedListOutline,
  UserOutline,
} from 'antd-mobile-icons'
import BannerImg from './img/banner.png'
import HotImg from './img/hot.png'
import Food1Img from './img/food1.png'
import Food2Img from './img/food2.png'
import CartImg from './img/cart.png'
import './index.less'
import "normalize.css"

function App() {
  const [activeKey, setActiveKey] = useState('1')

  const tabbars = [
    {
      key: 'home',
      title: '点餐',
      icon: <AppOutline />,
    },
    {
      key: 'todo',
      title: '购物车',
      icon: <UnorderedListOutline />,
      badge: '5',
    },
    {
      key: 'sale',
      title: '餐牌预告',
      icon: <ExclamationShieldOutline />,
    },
    {
      key: '我的',
      title: '我的',
      icon: <UserOutline />,
      badge: Badge.dot,
    },
  ]

  const back = () =>
    Toast.show({
      content: '欢迎进入点餐系统',
      duration: 1000,
    })


  const items = ['', '', '', ''].map((color, index) => (
    <Swiper.Item key={index}>
      <img style={
   
   {
        width: '100%'
      }} src={ BannerImg }></img>
    </Swiper.Item>
  ))

  const tabs =  [
    { key: '1', title: '热销' },
    { key: '2', title: '套餐' },
    { key: '3', title: '米饭' },
    { key: '4', title: '烧菜' },
    { key: '5', title: '汤' },
    { key: '6', title: '主食' },
    { key: '7', title: '饮料' },
  ]

  const productName = [
    '小炒黄牛肉',
    '芹菜肉丝炒香干',
    '番茄炒鸡蛋',
    '鸡汤',
    '酸菜鱼',
    '水煮肉片',
    '土豆炒肉片',
    '孜然肉片',
    '宫保鸡丁',
    '麻辣豆腐',
    '香椿炒鸡蛋',
    '豆角炒肉'
  ]
  const productList = productName.map((item, key) => {
    return {
      name: item,
      img: key % 2 === 1 ? Food1Img : Food2Img
    }
  })

  return (
    <div className="App">
      <NavBar onBack={back} style={
   
   {
        background: '#F0F0F0',
        fontWeight: 'bold'
      }}>点餐</NavBar>

      <div className='head-card'>
        <Swiper
          style={
   
   {
            '--border-radius': '8px',
          }}
          autoplay
          defaultIndex={1}
        >
          {items}
        </Swiper>
      </div>

      <div className='product-box'>
        <SideBar activeKey={activeKey} onChange={setActiveKey}>
          {tabs.map(item => (
            <SideBar.Item key={item.key} title={
              item.key === '1' ? <div>
              <div className='flex-center'>
                <img style={
   
   {
                  display: 'block',
                  width: '16px',
                  marginRight: '5px'
                }} src={ HotImg }></img>
                <div>{ item.title }</div>
              </div>
            </div> : item.title
            } />
          ))}
        </SideBar>
        <div className='product-right'>
          <div className='product-title'>热销</div>
          <div className='product-list'>
            {
              productList.map((item, key) => {
                return (
                  <div className='product-item'>
                    <div className='product-item-left'>
                      <img style={
   
   {
                        display: 'block',
                        width: '76px',
                        marginRight: '5px'
                      }} src={ item.img }></img>
                      <div className='product-item-left-info'>
                        <div>
                          <div className='product-item-left-info-name'>{ item.name }</div>
                          <div className='product-item-left-info-number'>月售{key + 1}0 赞{key * 5}</div>
                        </div>
                        <div className='product-item-left-info-price'>¥10</div>
                      </div>
                    </div>
                    <div className="cart">
                      <img style={
   
   {
                        display: 'block',
                        width: '30px',
                        marginRight: '5px'
                      }} src={ CartImg } onClick = { () =>
                        Toast.show({
                          content: '添加购物车成功'
                        }) }></img>
                    </div>
                  </div>
                )
              })
            }
          </div>
        </div>
      </div>

      <TabBar>
        {tabbars.map(item => (
          <TabBar.Item
            key={item.key}
            icon={item.icon}
            title={item.title}
            badge={item.badge}
          />
        ))}
      </TabBar>
    </div>
  );
}

export default App;

src ディレクトリに、index.less ファイルを作成し、次の関連性の低いコードをそのファイルにコピーします。

.head-card {
  padding: 10px 20px;
  box-sizing: border-box;
}

.flex-center {
  display: flex;
  align-items: center;
}

.product-box {
  display: flex;
  align-items: center;
  width: 100%;
  height: calc(100vh - 45px - 130px - 50px);
}

.product-right {
  flex: 1;
  height: 100%;
}

.product-title {
  font-family: PingFangSC-Regular;
  font-size: 14px;
  color: #000000;
  text-align: left;
  padding-bottom: 10px;
}

.product-list {
  height: calc(100% - 24px);
  overflow-y: auto;
}

.product-item {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-left: 10px;
  box-sizing: border-box;
  margin-bottom: 10px;
  &-left {
    display: flex;
    &-info {
      padding-left: 3px;
      box-sizing: border-box;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      &-name {
        font-family: PingFangSC-Regular;
        font-size: 14px;
        color: #000000;
        text-align: left;
      }
      &-number {
        padding-top: 3px;
        font-family: PingFangSC-Regular;
        font-size: 11px;
        color: #787878;
        text-align: left;
      }
      &-price {
        font-family: PingFangSC-Regular;
        font-size: 18px;
        color: #FF1800;
        text-align: left;
      }
    }
  }
}

.cart {
  position: absolute;
  right: 10px;
  bottom: 0;
}

コピーが完了したら、コンソールに 「yarn dev」と入力してプロジェクトを開始します。

  • Cloud Studio には、ウェブ アプリケーションをリアルタイムで表示できるプレビュー プラグインが組み込まれています。コードが変更されると、プレビュー ウィンドウが自動的に更新され、Cloud Studio でウェブページをリアルタイムで開発およびデバッグできます。
  • このプロジェクトはモバイル H5 プロジェクトであるため、スタイルを表示するには「デバイスの切り替え」ボタンを開く必要があります。
  • 携帯電話でのデバッグ用に QR コードが提供されています。

レンダリング:

3. 補足事項

1. その他のプロジェクト開発

親愛なる皆さん、前に述べたように、CloudStudio は React プロジェクトを迅速に構築するのに役立つだけでなく、Java、node.js、Flutter およびその他のプロジェクト タイプもサポートします。他のプロジェクトを試して体験することを歓迎します。

アプリケーション開発については、製品ドキュメントで参照できます。

2.自由労働時間

 古いユーザーのエクスペリエンスと新規ユーザーの開始コストの観点に基づいて、Cloud Studio チームは実際に毎月 3,000 分の無料作業スペースを提供しています。当月の時間がなくなり、未使用の時間は保持および蓄積されず、翌月に更新されてクリアされ、その後 3000 分の無料時間が与えられます。

 したがって、製品を使用していないときは、「停止」をクリックする必要があります。そうしないと、自由な時間が無駄になる可能性があります。

4. まとめ

アドバンテージ:

プログラミング初心者の中には、プログラミング内容をデフォルトの C ドライブに置くことを好む人もいます。その結果、次のような状況が生じます。

パソコンのCドライブがいっぱいですか?  これら 5 つのトリックを使用してクリーンアップし、すぐに 10 G を解放してください。 - ほぼ知っています

あるいは、プログラミング初心者の中には、プログラミング ソフトウェアが苦手な環境を常にインストールしている人もいます。

CloudStudio は、ソフトウェアをインストールせずにクラウドベースの開発環境であるクラウド開発を提供します。クラウド開発は自分のパソコンのメモリを消費せず、ブラウザ上でプログラミングできるのでとても便利です。

多言語サポート: CloudStudio は、C、C++、C#、Java、Python、JavaScript、Go、R、Rust などを含む複数のプログラミング言語をサポートしているため、幅広い適用性があります。

テンプレート開発: 独自のプロジェクトの作成と管理がより簡単になり、作業がより効率的かつ迅速になります。

一般的な問題に対する解決策を提供します。

いくつかの一般的な問題がドキュメントにリストされており、ユーザーが問題を解決しやすくするための解決策が提供されています。

豊富なプラグインと拡張機能: Cloud Studio は、ユーザーのニーズに応じてカスタマイズできる豊富なプラグインと拡張機能を提供します。これらのプラグインや拡張機能は、コードの自動補完、デバッグ、バージョン管理、パフォーマンス分析など、開発者の作業効率の向上に役立つさまざまな機能を提供します。

強力なコラボレーションと共有: Cloud Studio は、チーム コラボレーションと複数人による同時編集をサポートしており、複数人が同じプロジェクトでリアルタイムに共同作業できるため、開発効率が向上します。同時に、Cloud Studio は、チーム メンバー間のファイル交換と管理を容易にするファイル共有機能とバージョン管理機能も提供します。

クラウド デプロイメント キット: クラウドDeployKit 上で実行されるクラウド機能デプロイメント プラグインであり Cloud Studio(云端 IDE)開発者が複数のクラウド ベンダーの機能サービスにプロジェクトを迅速に展開できるようにすると便利です。これにより、開発者は展開プロセス中に各クラウド ベンダーの展開の詳細を深く理解する必要がなくなり、開発者はビジネス コード ロジックの実装に集中できるようになります。

提案:

1. 製品ドキュメントについて

全体として、ドキュメントは完璧ではありません。

①ビデオデモンストレーションの追加:ビデオデモンストレーションを追加すると、ユーザーは製品の使い方や機能をよりよく理解できます。

②アプリケーション開発ドキュメントの改善: 現在は Java、Node.js、Flutter のみが利用可能で、他の言語のドキュメントを追加できます。

2. Web ページを閉じますが、プロジェクトはまだ実行中です。

 プロジェクトはまだ実行中です:

Cloud Studio は毎月 3,000 分の無料作業スペースを提供しますが、一部の初心者ユーザーは Web ページを閉じた後に作業スペースを停止するのを忘れ、結果として無料作業スペースが無駄になってしまいます。

したがって、Web ページを閉じた後はワークスペースを手動で停止する必要があることをユーザーに通知する必要があります。

おすすめ

転載: blog.csdn.net/Javascript_tsj/article/details/131923532