日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

React项目案例-影视资源网站

發布時間:2024/1/8 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 React项目案例-影视资源网站 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

案例項目基本需求分析

  • 前端頁面布局使用Chakra-UI

  • 后端服務使用Next.js

  • 樣式定義采用CSS-in-JS的方案,使用emotion庫(需要在Next.js擴展babel配置)

  • Next.js 與Chakra-UI結合使用實現項目頁面的功能

  • 首頁(列表頁)的輪播圖,以及影視資源列表展示

  • 影視詳情頁使用基因動態路由的靜態生成

項目代碼初始化

運行安裝依賴包命令:

npm init next-app aimovie
cd aimovie
#npm i @chakra-ui/react
#npm i @chakra-ui/react@^1 @emotion/react@^11 @emotion/styled@^11 framer-motion@^6
npm i @chakra-ui/react @emotion/react @emotion/styled framer-motion
npm i react-icons
npm i @babel/core @emotion/babel-preset-css-prop -D {"name": "aimovie","version": "0.1.0","private": true,"scripts": {"dev": "next dev","build": "next build","start": "next start","lint": "next lint"},"dependencies": {"@babel/core": "^7.21.0","@chakra-ui/react": "^2.5.1","@emotion/react": "^11.10.6","@emotion/styled": "^11.10.6","framer-motion": "^10.2.5","next": "13.2.4","react": "18.2.0","react-dom": "18.2.0","react-icons": "^4.8.0"} }

創建pages目錄下的 _app.js 文件:

// import '@/styles/globals.css' // pages/_app.js import { ChakraProvider, CSSReset } from '@chakra-ui/react' import theme from '../chakra'function App ({ Component, pageProps }) {return (<ChakraProvider theme={theme}><CSSReset /><Component {...pageProps} /></ChakraProvider>) }export default App

創建 .babelrc 文件作為babel的配置文件:(在新版的next.js中不需要配置,默認開啟了cssProp,否則會產生next/font沖突)

{"presets": ["next/babel","@emotion/babel-preset-css-prop"] }

頁面組件規劃與布局實現

實現頁面頭部組件

頭部組件包含三部分:左側的登錄注冊按鈕組件 中間的網站logo 右邊的搜索按鈕。

布局規劃:左浮動 有浮動 中間logo始終居中。

創建components文件夾,用于存放非頁面層級的組件。

頭部組件基本布局:

import React from 'react' import { Box, Button, Container, Image } from '@chakra-ui/react' import { FaSearch, FaSignInAlt, FaUserAlt } from 'react-icons/fa' import styled from '@emotion/styled' import { css } from '@emotion/react' const SignInAndJoin = styled.div`height: 52px;line-height: 52px;color: #fff;border-left: 1px solid #393939;border-right: 1px solid #393939;padding: 0 6px;float: left; ` const logo = css`position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);width: 140px;height: auto; `const Search = styled.a`float: right;height: 52px;border-left: 1px solid #393939;border-right: 1px solid #393939;color: #fff;padding: 0 10px;display: flex;align-items: center; ` export default function Header () {return (<Box h='52px' bgColor='#202020' borderBottom='1px solid #393939'><Container pos='relative' h='52px' maxW='1200px'><SignInAndJoin><Buttonmr='5px'leftIcon={<FaSignInAlt />}colorScheme='teal'variant='solid'>登錄</Button><ButtonleftIcon={<FaUserAlt />}colorScheme='orange'variant='outline'>注冊</Button></SignInAndJoin><Image css={logo} src='/images/logo.png' /><Search><FaSearch size='16px' title='搜索' /></Search></Container></Box>) }

實現導航組件布局

import React from 'react' import { Box, HStack, Link } from '@chakra-ui/react' import NextLink from 'next/link' import styles from '@/styles/Navigation.module.css' import { useRouter } from 'next/router'export default function Navigation () {const router = useRouter()const isActiveLink = href => router.asPath === hrefreturn (<Box height='52px' bgColor='#202020' color='#fff'><HStack h='100%' spacing={3} justifyContent='center' alignItems='center'><LinkclassName={`${styles.navlink} ${isActiveLink('/') ? styles.active : ''}`}href='/'as={NextLink}>影片</Link><LinkclassName={`${styles.navlink} ${isActiveLink('/1') ? styles.active : ''}`}href='/1'as={NextLink}>漫畫</Link><LinkclassName={`${styles.navlink} ${isActiveLink('/2') ? styles.active : ''}`}href='/2'as={NextLink}>電影</Link><LinkclassName={`${styles.navlink} ${isActiveLink('/3') ? styles.active : ''}`}href='/3'as={NextLink}>電視</Link><LinkclassName={`${styles.navlink} ${isActiveLink('/4') ? styles.active : ''}`}href='/4'as={NextLink}>新聞資訊</Link></HStack></Box>) }

實現輪播圖組件布局

這里使用到一個第三方組件react-responsive-carousel

npm i react-responsive-carousel import React from 'react' import { Carousel } from 'react-responsive-carousel' import 'react-responsive-carousel/lib/styles/carousel.min.css' import { css } from '@emotion/react' import { Box, Stack, Heading, Text, Button } from '@chakra-ui/react' import styled from '@emotion/styled' const CarouselItem = styled.div`position: relative;& > div {position: absolute;left: 50%;top: 0;transform: translateX(-50%);color: #fff;width: 80%;height: 100%;max-width: 1200px;text-align: left;& > h2 {width: 450px;}& > p {margin: 15px 0;width: 450px;}}& > img {filter: brightness(50%);} ` const swiperContainer = css`& > .carousel-root {position: relative;& > .carousel:last-child {position: absolute;left: 0;bottom: 0;& > .thumbs-wrapper > .thumbs {display: flex;justify-content: center;}}} `export default function Swiper () {return (<Box css={swiperContainer}><Carousel// autoPlayinfiniteLoopemulateTouchshowArrows={false}showIndicators={false}showStatus={false}><CarouselItem><img src='/images/1.jpg' /><Stack justifyContent='center'><Heading as='h1' size={'lg'}>King In Black</Heading><Text>The next shock chapter in Donny Cates and Ryan Stegman hello lookat me! shock chapter in Donny Cates and Ryan Stegman hello look atme!</Text><Button colorScheme='red' w='150px'>Go To This</Button></Stack></CarouselItem><CarouselItem><img src='/images/2.jpg' /><Stack justifyContent='center'><Heading as='h1' size={'lg'}>King In Black</Heading><Text>The next shock chapter in Donny Cates and Ryan Stegman hello lookat me! shock chapter in Donny Cates and Ryan Stegman hello look atme!</Text><Button colorScheme='red' w='150px'>Go To This</Button></Stack></CarouselItem><CarouselItem><img src='/images/3.jpg' /><Stack justifyContent='center'><Heading as='h1' size={'lg'}>King In Black</Heading><Text>The next shock chapter in Donny Cates and Ryan Stegman hello lookat me! shock chapter in Donny Cates and Ryan Stegman hello look atme!</Text><Button colorScheme='red' w='150px'>Go To This</Button></Stack></CarouselItem></Carousel></Box>) }

實現電影列表布局

import React from 'react' import { Box, Heading, HStack, Text } from '@chakra-ui/react' import { FaFilm } from 'react-icons/fa' import { MdMovie } from 'react-icons/md'export default function Movie () {return (<Box maxW='1200px' mx='auto' mt='20px'><HStack fontSize='24px' my='10px'><MdMovie size='24px' /><Heading as='h3'>電影</Heading></HStack><HStack mt='20px' spacing={3}><Box w={'290px'}><img src='/images/item_1.jpg' /><Text mt='10px' as='section'>Expected corresponding JSX closing tag for Black Hero</Text></Box><Box w={'290px'}><img src='/images/item_1.jpg' /><Text mt='10px' as='section'>Expected corresponding JSX closing tag for Black Hero</Text></Box><Box w={'290px'}><img src='/images/item_1.jpg' /><Text mt='10px' as='section'>Expected corresponding JSX closing tag for Black Hero</Text></Box><Box w={'290px'}><img src='/images/item_1.jpg' /><Text mt='10px' as='section'>Expected corresponding JSX closing tag for Black Hero</Text></Box><Box w={'290px'}><img src='/images/item_1.jpg' /><Text mt='10px' as='section'>Expected corresponding JSX closing tag for Black Hero</Text></Box><Box w={'290px'}><img src='/images/item_1.jpg' /><Text mt='10px' as='section'>Expected corresponding JSX closing tag for Black Hero</Text></Box></HStack></Box>) }

實現電影詳情頁面布局

import Layout from '@/components/Layout' import React from 'react' import { Box, HStack, Text, Heading, Divider } from '@chakra-ui/react' import { css } from '@emotion/react'const DetailContainer = css`padding: 10px;& > p {font-size: 14px;margin-bottom: 10px;}& > img {display: block;margin-bottom: 10px;} ` export default function Detail () {return (<Layout><Box maxW='1200px' mx='auto' width='80%' mt='70px'><Heading as='h2' size='xl'>Marvel Mission recap: Captain Marvel's Star of Hala</Heading><Headingas='h4'size='lg'mt='10px'color='gray.500'fontWeight='light'>The result are out this world!</Heading><Divider mt='10px' /><HStackoverflow='hidden'justifyContent='space-between'spacing={3}my='10px'><Text>作者: MarkTony</Text><Text>發布時間: 2040-05-10</Text></HStack><Divider mt='10px' /><Box css={DetailContainer}><p>event - compiled client and server successfully in 377 ms (1213modules) wait - compiling... event - compiled client and serversuccessfully in 520 ms (1213 modules) wait - compiling... event -compiled client and server successfully in 646 ms (1213 modules)wait - compiling...</p><p>event - compiled client and server successfully in 377 ms (1213modules) wait - compiling... event - compiled client and serversuccessfully in 520 ms (1213 modules) wait - compiling... event -compiled client and server successfully in 646 ms (1213 modules)wait - compiling...</p><p>event - compiled client and server successfully in 377 ms (1213modules) wait - compiling... event - compiled client and serversuccessfully in 520 ms (1213 modules) wait - compiling... event -compiled client and server successfully in 646 ms (1213 modules)wait - compiling...</p><p>event - compiled client and server successfully in 377 ms (1213modules) wait - compiling... event - compiled client and serversuccessfully in 520 ms (1213 modules) wait - compiling... event -compiled client and server successfully in 646 ms (1213 modules)wait - compiling...</p></Box></Box></Layout>) }

實現首頁組件的靜態生成

輪播圖數據獲取與展示

這里我們需要使用到axios庫來發送請求以獲取我們所需的數據:

npm i axios

在根目錄下創建一個axiosConfig.js文件:

export const baseURL = 'http://localhost:3000' export default {// thrid-party API base URLbaseURL }

在pages/api目錄下創建swiper.js的文件,模擬獲取swiper的API供組件調用:

import { baseURL as url } from '@/axiosConfig'export default function swiper (req, res) {res.status(200).json([{id: 1,title: 'Event-Sized Episode!',description:"Paul Scheer and Steve Wacker are joined by Anthony Carboni of 'The Star Wars Show' for an event sized episode!",url: `${url}/apiresources/images/api_swiper_1.jpg`,vid: 1},{id: 2,title: 'Time Travel Tips',description:'Traveling back in time is never easy? Let us help by consulting the pros!',url: `${url}/apiresources/images/api_swiper_2.jpg`,vid: 2},{id: 3,title: 'KING IN BLACK',description:"The next shocking chapter in Donny Cates and Ryan Stegman's Venom Saga is revealed!",url: `${url}/apiresources/images/api_swiper_3.jpg`,vid: 3},{id: 4,title: "LET'S PLAY FORTNITE",description:'Watch as we stream the brand new Captain America outfit in Fortnite!',url: `${url}/apiresources/images/api_swiper_4.jpg`,vid: 4},{id: 5,title: 'HAPPY ULTRAMAN DAY!',description:"Celebrate by getting a sneak peek at 'Rise of Ultraman #1'!",url: `${url}/apiresources/images/api_swiper_5.jpg`,vid: 5}]) }

components/Swiper.js組件文件中,創建并導出loadSwiper函數:

// components/Swiper.js export function loadSwiper () {// 這離獲取數據不建議從本地通過API接口獲取,而應該通過封裝后端的方法函數直接操作數據庫獲取// 如果是第三方API可以通過API接口獲取數據return axios.get('/api/swiper', { baseURL: 'http://localhost:3000/' }) }

然后在首頁的Home組件(pages/index.js)中,創建并導出getStaticProps函數,并且在Home組件中解構組件的props獲取swiper數據對象,把swiper作為data屬性傳遞給Swiper組件:

import Image from 'next/image' // import { Inter } from 'next/font/google' import styles from '@/styles/Home.module.css' import Swiper, { loadSwiper } from '@/components/Swiper' import Movie from '@/components/Movie' import Layout from '@/components/Layout'// const inter = Inter({ subsets: ['latin'] })export default function Home ({ swiper }) {return (<><Layout><Swiper data={swiper} /><Movie /></Layout></>) }export async function getStaticProps () {let { data: swiper } = await loadSwiper()return {props: {swiper}} }

使用傳遞給components/Swiper.js組件的數據修改組件內容展示:

import React from 'react' import { Carousel } from 'react-responsive-carousel' import 'react-responsive-carousel/lib/styles/carousel.min.css' import { css } from '@emotion/react' import { Box, Stack, Heading, Text, Button } from '@chakra-ui/react' import styled from '@emotion/styled' import axios from 'axios' import { useRouter } from 'next/router'const CarouselItem = styled.div`position: relative;& > div {position: absolute;left: 50%;top: 0;transform: translateX(-50%);color: #fff;width: 80%;height: 100%;max-width: 1200px;text-align: left;& > h2 {width: 450px;}& > p {margin: 15px 0 15px;width: 450px;font-size: 14px;}}& > img {filter: brightness(50%);} ` const swiperContainer = css`& > .carousel-root {position: relative;& > .carousel:last-child {position: absolute;left: 0;bottom: 0;& > .thumbs-wrapper > .thumbs {display: flex;justify-content: center;}}} `export default function Swiper ({ data }) {const router = useRouter()return (<Box css={swiperContainer}><Carousel// autoPlayinfiniteLoopemulateTouchshowArrows={false}showIndicators={false}showStatus={false}>{data.map(swiper => (<CarouselItem key={swiper.id}><img src={swiper.url} /><Stack justifyContent='center'><Heading as='h2' fontSize='4xl'>{swiper.title}</Heading><Text>{swiper.description}</Text><ButtoncolorScheme='red'w='120px'size='lg'onClick={() =>router.push({pathname: '/detail/[id]',query: { id: swiper.vid }})}>CHECK DETAIL</Button></Stack></CarouselItem>))}</Carousel></Box>) }export function loadSwiper () {// 這離獲取數據不建議從本地通過API接口獲取,而應該通過封裝后端的方法函數直接操作數據庫獲取// 如果是第三方API可以通過API接口獲取數據return axios.get('/api/swiper', { baseURL: 'http://localhost:3000/' }) }

電影列表數據的獲取與展示

在pages/api目錄下創建movie.js的文件,模擬獲取movie的API供組件調用:

import { baseURL as url } from '@/axiosConfig'export default function movie (req, res) {res.status(200).json([{id: 1,vid: 6,url: `${url}/apiresources/images/api_movie_1.jpg`,title: 'Marvel Mission Recap: Captain Marvel’s Star of Hala'},{id: 2,vid: 7,url: `${url}/apiresources/images/api_movie_2.jpg`,title: 'Make Your Video Calls Worthy With These Backgrounds'},{id: 3,vid: 8,url: `${url}/apiresources/images/api_movie_3.jpg`,title: 'Make Your Video Calls Worthy With These Backgrounds'},{id: 4,vid: 9,url: `${url}/apiresources/images/api_movie_4.jpg`,title:'Marvel At Home: Here’s How to Stay Connected With Your Favorite Super Heroes'}]) }

components/Movie.js組件文件中,創建并導出loadMovie函數:

export function loadMovie () {return axios.get('/api/movie', { baseURL }) }

然后在首頁的Home組件(pages/index.js)中,創建并導出getStaticProps函數,并且在Home組件中解構組件的props獲取movie數據對象,把movie作為data屬性傳遞給Movie組件:

import Image from 'next/image' // import { Inter } from 'next/font/google' import styles from '@/styles/Home.module.css' import Swiper, { loadSwiper } from '@/components/Swiper' import Movie, { loadMovie } from '@/components/Movie' import Layout from '@/components/Layout'// const inter = Inter({ subsets: ['latin'] })export default function Home ({ swiper, movie }) {return (<><Layout><Swiper data={swiper} /><Movie data={movie} /></Layout></>) }export async function getStaticProps () {const { data: swiper } = await loadSwiper()const { data: movie } = await loadMovie()return {props: {swiper,movie}} }

使用傳遞給components/Movie.js組件的數據修改組件內容展示:

import React from 'react' import { Box, Heading, HStack, Text, Image } from '@chakra-ui/react' import { FaFilm } from 'react-icons/fa' import { MdMovie } from 'react-icons/md' import { baseURL } from '@/axiosConfig' import axios from 'axios' import { useRouter } from 'next/router'export default function Movie ({ data }) {const router = useRouter()return (<Box maxW='1200px' mx='auto' px='10px' mt='20px'><HStack><MdMovie size='18px' /><Heading as='h3' fontSize='18px'>電影</Heading></HStack><HStackmt='20px'spacing='0'flexFlow='wrap'justifyContent='space-between'>{data.map(movie => (<BoxonClick={() => router.push(`/detail/${movie.vid}`)}key={movie.id}w='290px'cursor='pointer'><Image w='290px' src={movie.url} /><Text h='52px' overflow='hidden' mt='10px' as='section'>{movie.title}</Text></Box>))}</HStack></Box>) }export function loadMovie () {return axios.get('/api/movie', { baseURL }) }

實現詳情頁基于動態路由的數據獲取與展示

詳情頁屬于基于動態路由的靜態生成,首先我們要做的就是在首頁點擊鏈接或按鈕跳轉到對應的詳情頁。

這需要使用到Link或者next/router。

上面的頁面已經實現了此功能,這里就不再重復。

首先,創建pages/api/videos.js 來模擬獲取所有video id列表的API:

import { baseURL as url } from '@/axiosConfig'export const videos = [{id: '1',title:"It's an Event-Sized Episode of 'Marvel Presents: The World's Greatest Book Club with Paul Scheer' in Celebration of 'Empyre'",sub:"Paul Scheer and Steve Wacker are joined by Anthony Carboni of 'The Star Wars Show'!",author: 'JAMIE FREVELE',publish: '2050-05-26',content:"<p>Time for a new episode of Marvel Presents: The World's Greatest Book Club with Paul Scheer -- and this one, Marvelites, is super-sized! Why? Because there's a new Marvel comic event in our midst, and EMPYRE deserves no less than a big celebration with hosts Paul Scheer and Steve Wacker! Paul and Steve are joined by guest Anthony Carboni (The Star Wars Show) for a calamitous conversation about other notable Marvel events.</p><video controls src='" +url +"/apiresources/videos/1.mp4'></video><p>But first -- EMPYRE! Steve provided an inside look at the creation of the intergalactic conflict and what Marvel fans can expect:</p><p>“What [writers Al Ewing and Dan Slott] definitely wanted to get away from was making it a [Fantastic Four] versus the Avengers, yet another story where friends fight each other and try to kill each other. Much like this show.”</p><p>He went on to predict the lasting effects of EMPYRE on the Marvel Universe:</p><p>“There are some big changes coming, and I think when we’re in our sweet spot is when we at Marvel are a little nervous about how the fans are going to react. It’s our job to put them through the ringer, to put them through hell. I think EMPYRE is not the story at the beginning that you think it is.”</p>"},{id: '2',title: "Time Travel Tips from 'Marvel's Agents of S.H.I.E.L.D.'",sub:'Traveling back in time is never easy? Let us help by consulting the pros!',author: 'CHRISTINE DINH',publish: '2050-03-13',content:"<img src='" +url +"/apiresources/images/detail_2.jpg'/><p>Look, we all know hopping through the decades ain't easy. In fact, who can keep up with all the different rules of time travel.</p><video controls src='" +url +"/apiresources/videos/2.mp4'></video><p>Luckily, we know a bunch of experts. During the production of Marvel's Agents of S.H.I.E.L.D. Season 7, Marvel.com had the opportunity to consult the cast and showrunners how to remain composure while navigating time travel. Watch what they have to say, learn the Do's and Don't's, and word of advice, it's probably best to avoid the shenanigans of Deke Shaw. We haven't forgotten the events of Season 6, Deke 👀.</p>"},{id: '3',title:"The Next Shocking Chapter in Donny Cates and Ryan Stegman's Venom Saga Revealed",sub: "'King in Black' conquers the Marvel Universe this December!",author: 'MARVEL',publish: '2060-08-30',content:"<p>This December, the entire Marvel Universe braces itself for KING IN BLACK, the latest installment in writer Donny Cates and artist Ryan Stegman’s revolutionary take on the Venom mythos. Knull is coming, and when he arrives, everyone from the Avengers to the X-Men will learn just how unprepared they are to face off against the God of the Symbiotes. Everything in Cates and Stegman’s landmark run on VENOM has led up to this monumental story, and readers will finally witness Eddie Brock’s climatic standoff with one of Marvel’s most terrifying villains.</p><video controls src='" +url +"/apiresources/videos/3.mp4'></video><img src='" +url +"/apiresources/images/detail_3.jpg'/><p>With each mind-bending twist and turn, the stakes will be raised like never before as KING IN BLACK flips everything you thought you knew about Venom and the world of the symbiotes upside down and inside out. Learn more in the special video announcement from the mastermind creative team, and stay tuned for more news about what to expect when KING IN BLACK lands later this year!</p>"},{id: '4',title:"Livestream: Let's Play LIVE: Fortnite Featuring the Captain America Outfit",sub: 'Follow along LIVE TODAY at 1pm PT / 4pm ET!',author: 'MARVEL',publish: '2050-09-05',content:"<p>Tune in to Marvel's Official Twitch Channel at 4:00 PM ET (1:00 PM PT) today to join Marvel host Josh Saleh as he channels the First Avenger – Captain America – who made his debut on Fortnite last week!</p><p>Follow along with Josh, and be sure to grab the Captain America Outfit in the Item Shop. Armed with his indestructible shield and iron will, Super-Soldier Steve Rogers won’t give up until the mission is finished.</p><video controls src='" +url +"/apiresources/videos/4.mp4'></video><p>Want to stay on top of everything in the Marvel Universe? Follow Marvel on social media—Twitter, Facebook, and Instagram—and keep watching Marvel.com for more news!</p>"},{id: '5',title: "Celebrate Ultraman Day with a Sneak Peek at 'Rise of Ultraman #1'",sub: 'Happy Ultraman Day!',author: 'MARVEL',publish: '2080-09-28',content:"<p>Ultraman has been a pop culture icon for over 50 years and this September, Marvel Comics will proudly contribute to the franchise’s incredible legacy with RISE OF ULTRAMAN #1!</p><p>Writers Kyle Higgins (Mighty Morphin Power Rangers, Winter Soldier) and Mat Groom (Self/Made) will join superstar artists Francesco Manna (Avengers, Fantastic Four) Michael Cho (Captain America) and Gurihiru (The Unstoppable Wasp) to reimagine the thrilling beginnings of the Ultraman phenomenon.</p><p>In honor of Ultraman Day, the celebration of Ultraman’s first public television appearance in 1966, check out a first look at the highly anticipated premiere issue including exclusive preview pages, a variant cover gallery, and more below!</p><img src='" +url +"/apiresources/images/detail_5.jpg'/><p>Stay tuned for more news about Marvel’s exciting collaboration with Tsuburaya Productions and don’t miss THE RISE OF ULTRAMAN #1 when it hits stands September 9th!</p>"},{id: '6',title: 'Marvel Mission Recap: Captain Marvel’s Star of Hala',sub: 'The results are out of this world!',author: 'RACHEL PAIGE',publish: '2046-05-23',content:"<p>Congrats agents — it appears that many of you successfully completed the latest Marvel Mission!</p><img src='" +url +"/apiresources/images/detail_6.jpg'/><p>Tasked to bring Captain Marvel’s Star of Hala to life using only safe household products and materials, the results we saw were outstanding and would make Carol Danvers and the Carol Corps proud!</p><p>While it was tough to narrow down all the submissions we received, we’ve rounded up some of our favorites that we saw across social media. Take a look at the post below, and though this Marvel Mission might be closed, there’s always time to make a star for yourself! </p>"},{id: '7',title: 'Make Your Video Calls Worthy With These Backgrounds',sub: 'Video call backgrounds, assemble!',author: 'RACHEL PAIGE',publish: '2028-12-25',content:"<p>Hey Marvel Insiders – did you know reading this article could earn you 250 points? All you need to do is sign in or join now before you keep reading!</p><p>Taking a video call in your living space with your regular home background is typical, mundane, and not at all dangerous. </p><p>But taking a video call with an Avengers approved background is exciting, heroic, and will definitely make your co-workers think you’re working from Asgard.</p><p>As more and more communication for work, fun, and play happens over our computer screens, we’ve assembled some video call backgrounds that you can use. Taking some of the Marvel Cinematic Universe's most iconic locations, have fun swapping out the backdrop of your kitchen for a sweeping landscape of Wakanda. Check out the backgrounds you can download below! </p><img src='" +url +"/apiresources/images/detail_7_1.jpg'/><img src='" +url +"/apiresources/images/detail_7_2.jpg'/><p>To download the images: Right-click on the selected background of your choice and select SAVE IMAGE AS. The image will download to your desktop and you can insert it into the video conferencing program of your choice. Enjoy! </p><p>By downloading the images you agree to be bound by the terms located here.</p><p>Want to stay on top of everything in the Marvel Universe? Follow Marvel on social media—Twitter, Facebook, and Instagram—and keep watching Marvel.com for more news!</p>"},{id: '8',title:"Everything We Saw During the First 'Marvel’s Avengers' WAR TABLE Livestream",sub: 'Get ready to Embrace Your Powers on September 4!',author: 'CHRISTINE DINH',publish: '2048-05-10',content:'<p>Marvel Games, Square Enix, and Crystal Dynamics launched the very first Marvel’s Avengers WAR TABLE stream today. The Marvel’s Avengers WAR TABLE, which will be a monthly offering, gives players an in-depth look at many different aspects of the highly-anticipated game before it launches on September 4.</p><p>Opening up the Marvel’s Avengers WAR TABLE was the release of the brand-new story trailer narrated by the game’s central villain, Dr. George Tarleton. Tarleton joins the previously announced Taskmaster as another antagonist in the Avengers’ story.</p><p>Opening up the Marvel’s Avengers WAR TABLE was the release of the brand-new story trailer narrated by the game’s central villain, Dr. George Tarleton. Tarleton joins the previously announced Taskmaster as another antagonist in the Avengers’ story.</p><p>Marvel fans will recognize that Tarleton is none other than MODOK (Mental Organism Designed Only for Killing) – the artificially-mutated, super intelligent founder of AIM (Advanced Idea Mechanics). The story behind how Tarleton becomes MODOK is central to the game and one we’re eager to hear more about along with who voiced the deadly villain!</p><p>MODOK believes in AIM’s mission – fixing the damage the Avengers did, all those years ago on A-Day, by instilling order, ruling by science, and creating boundaries on what he reveals as the true threat to this world – the Inhumans disease. Taking his mission to the extreme, MODOK aims to rid the Earth of superpowers seeing it as a force that cannot be controlled or contained!</p><p>The Hero Missions allow Marvel’s Avengers to reveal more of each hero’s story, showcasing a variety of their narrative and backstory. Each hero has 3 iconic heroic moves: Assault, Ultimate, and Support. Learn more about these heroic moves and attacks for the Avengers by rewatching the Marvel’s Avengers WAR TABLE at the top of the article.</p>'},{id: '9',title:'Marvel At Home: Here’s How to Stay Connected With Your Favorite Super Heroes',sub: "Here's everything that's happening at the House of Ideas for fans!",author: 'RACHEL PAIGE',publish: '2082-06-25',content:"<p>We’re constantly dreaming up new ways to connect with readers, viewers, and fans at the House of Ideas and now, with everyone spending more time at home than ever, there are even more ways to bring Marvel into your home — wherever your home might be! </p><img src='" +url +"/apiresources/images/detail_9.jpg'/><p>Over the past month, we’ve worked to bring fans a chance to escape within the Marvel Universe, and if you haven’t already, there are so many ways to experience #MarvelAtHome. Whether you’re spending the day working, entertaining family members, or catching up on reading (or watching), here are some of the ways we’re keeping you connected to your favorite Super Heroes.</p><p>Wondering what it takes to bring Marvel characters to life on the page? Well, first you have to start with pencils and paper and the pros will show you what to do next! Follow along as we learn how to draw iconic characters like Spider-Man, Groot, and Wolverine and stay tuned to see who’s next!</p>"} ]export default function video (req, res) {res.status(200).json(videos.map(video => video.id)) }

這個接口是下面我們要實現動態路由的靜態生成時使用到的。

同時創建pages/api/detail.js模擬獲取某個id對應的video的詳細信息:

import { videos } from './videos'export default function detail (req, res) {const id = req.query.id// 這里應該利用封裝的方法操作數據庫獲取數據或者請求遠端API獲取const video = videos.find(video => video.id === id)res.status(200).send(video) }

接下來我們要在pages/detail/[id].js實現動態路由的靜態生成:

  • 獲取用戶能夠訪問到的所有路由參數

  • // 獲取用戶能夠訪問到的所有路由參數 export async function getStaticPaths () {const { data } = await axios.get('/api/videos', { baseURL })const paths = data.map(id => ({ params: { id } }))return {paths,fallback: false} }
  • 根據參數獲取其對應的數據

  • // 根據參數獲取其對應的數據 export async function getStaticProps ({ params }) {const id = params.idconst { data: detail } = await axios.get('/api/detail', {baseURL,params: { id }})return {props: {detail}} }

    使用傳遞給pages/detail/[id].js中的Detail頁面組件的props數據{detail}修改組件內容展示:

    import Layout from '@/components/Layout' import React from 'react' import { Box, HStack, Text, Heading, Divider } from '@chakra-ui/react' import { css } from '@emotion/react' import axios from 'axios' import { baseURL } from '@/axiosConfig'const DetailContainer = css`padding: 5px;& > p {font-size: 14px;margin-bottom: 10px;}& > img {display: block;margin-bottom: 10px;} ` export default function Detail ({ detail }) {return (<Layout><Box maxW='1200px' mx='auto' width='80%' mt='70px'><Heading as='h2' size='xl'>{detail.title}</Heading><Headingas='h4'size='lg'mt='10px'color='gray.500'fontWeight='light'>{detail.sub}</Heading><Divider mt='10px' /><HStackoverflow='hidden'justifyContent='space-between'spacing={3}my='10px'><Text>作者: {detail.author}</Text><Text>發布時間: {detail.publish}</Text></HStack><Divider mt='10px' /><BoxdangerouslySetInnerHTML={{ __html: detail.content }}css={DetailContainer}></Box></Box></Layout>) }// 獲取用戶能夠訪問到的所有路由參數 export async function getStaticPaths () {const { data } = await axios.get('/api/videos', { baseURL })const paths = data.map(id => ({ params: { id } }))return {paths,fallback: false} }// 根據參數獲取其對應的數據 export async function getStaticProps ({ params }) {const id = params.idconst { data: detail } = await axios.get('/api/detail', {baseURL,params: { id }})return {props: {detail}} }

    至此,網站已初具規模。

    我們接下來把完整的videos列表再另起一個頁面就行在客戶端滾動頁面觸發動態獲取更多數據并展示到頁面上即可。

    導出靜態網站

    在package.json中添加項目的命令腳本:

    scripts: {
    ...
    "export": "next build && next export"
    }

    構建導出時因為我們的開發環境下系統后臺不支持圖片優化的API,所以在構建的時候會報錯:

    Error: Image Optimization using Next.js' default loader is not compatible with `next export`.Possible solutions:- Use `next start` to run a server, which includes the Image Optimization API.- Configure `images.unoptimized = true` in `next.config.js` to disable the Image Optimization API.Read more: https://nextjs.org/docs/messages/export-image-api

    Possible Ways to Fix It

    • Use next start to run a server, which includes the Image Optimization API.

    • Use any provider which supports Image Optimization (such as Vercel).

    • Configure loader in next.config.js.

    • Configure unoptimized in next.config.js.

    開發下我們直接修改next.config.js配置關閉構建時對圖片的優化:

    /** @type {import('next').NextConfig} */ const nextConfig = {reactStrictMode: true,images: {unoptimized: true},exportPathMap: async function (defaultPathMap,{ dev, dir, outDir, distDir, buildId }) {return {'/': { page: '/' }}} }module.exports = nextConfig

    項目到處成功會看到這樣的提示:

    Export successful. Files written to /Users/huiquandeng/projects/lg-fed-lp/my-module/aimovie/out

    默認到處到out目錄下。

    因為需要后臺服務器配合構建靜態資源,所以我們需要模擬開啟一個提供API接口的服務器。

    自定義Next應用服務器

    npm i express nodemon

    目的:在next項目的基于頁面的路由系統拓展我們自己的自定義路由系統

    在next項目中創建server/index.js:

    const express = require('express') const next = require('next') const hostname = 'localhost' const port = 3000 const dev = process.env.NODE_ENV !== 'production' const app = next({ dev, hostname, port }) // const app = next({ dev })const server = express() const handler = app.getRequestHandler() app.prepare().then(() => {server.get('/helloworld', (req, res) => {console.log('deal before next RequestHandler...')res.send('Good Luck!')})server.get('*', async (req, res) => {await handler(req, res)})server.listen(port, () => console.log('Server is listening on port 3000')) })

    接著,在package.json文件中創建項目命令:

    "serve:dev": "nodemon -r ./server/index.js", "serve:prod": "NODE_ENV=production nodemon -r ./server/index.js"

    通過運行自定義服務器啟動項目:

    總結

    以上是生活随笔為你收集整理的React项目案例-影视资源网站的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    日韩黄色免费看 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 欧美久久久久久久久中文字幕 | 丁香六月婷婷 | av九九 | 免费日韩一区二区 | 黄色一级大片在线免费看产 | 免费在线观看av网址 | 91探花国产综合在线精品 | 欧美色一色 | 极品久久久 | 亚洲激情电影在线 | www免费看 | 丝袜美腿一区 | 国产91影院 | 亚洲精品视频在线免费播放 | 日日夜夜狠狠 | 亚洲精品一区中文字幕乱码 | 久久久在线观看 | 国产精品粉嫩 | 中文字幕一区二区三区四区久久 | 精品免费久久久久 | 日韩精品视频网站 | 成人黄色中文字幕 | 国产成人福利片 | 国内偷拍精品视频 | 精品亚洲成a人在线观看 | 一区二区三区在线观看中文字幕 | 在线色资源 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 日韩精品观看 | 91色国产在线 | 国产九九九精品视频 | 水蜜桃亚洲一二三四在线 | 91九色视频网站 | 日韩电影一区二区三区在线观看 | 国产精品美女www爽爽爽视频 | 国产视频1区2区 | 国产美女无遮挡永久免费 | 亚洲精品成人在线 | 一区二区三区中文字幕在线 | 久久精品电影院 | 久久国产一区二区三区 | 综合黄色网 | 在线中文字幕电影 | 国产视频一区在线 | 亚洲另类视频在线 | 天天操天天射天天舔 | 久草视频资源 | 中文字幕在线观看播放 | 国产99自拍| 日韩在线色视频 | 国产高清一区二区 | 99精品国产免费久久久久久下载 | av中文字幕在线观看网站 | 91麻豆精品国产91久久久更新时间 | 成人91在线 | 中文字幕日韩免费视频 | 欧美-第1页-屁屁影院 | 亚洲国产丝袜在线观看 | av黄色大片| 草免费视频 | av在线收看| 国产精品国产三级国产不产一地 | 亚洲精品久久久久久国 | 开心色激情网 | 国产69精品久久久久久久久久 | 奇米网网址 | 99久久婷婷| 韩国精品福利一区二区三区 | 日韩a级免费视频 | 亚洲人成网站精品片在线观看 | 国产区精品在线观看 | 国产精品嫩草在线 | 欧美日韩精品在线 | 成人丁香花 | 在线日韩精品视频 | 国产一二三四在线视频 | 天天操夜夜操夜夜操 | 色综合天天爱 | 激情综合色综合久久综合 | 免费看久久久 | 国产一区二区三区午夜 | 91麻豆精品国产91久久久使用方法 | 日韩精品2区 | 国产大片免费久久 | 国产成人精品久久久 | 亚洲一区网站 | 亚州成人av在线 | 国产精品一区二区三区在线播放 | 在线a人v观看视频 | 国产97色| 久日精品 | 在线国产91 | 一区二区三区中文字幕在线观看 | 亚洲天堂网在线视频观看 | 狠狠干婷婷 | 91av99| www.日日日.com | 日韩免费电影网站 | 91在线操 | 黄色高清视频在线观看 | 肉色欧美久久久久久久免费看 | 亚洲手机av | 开心激情久久 | 久久精品高清视频 | 亚洲第一久久久 | 热久久在线视频 | 黄色aaa级片| 欧美精品一区二区在线观看 | 激情久久一区二区三区 | 久久欧美视频 | 欧美日韩另类视频 | 国产精品成人久久久久 | 日韩va欧美va亚洲va久久 | 国产成人精品电影久久久 | 日本黄色一级电影 | 色多多视频在线 | 黄色电影网站在线观看 | 99精品在线免费观看 | 天天射成人| 激情五月婷婷丁香 | 日韩高清在线一区二区 | 国产精品一区在线 | 日韩精品字幕 | 开心综合网 | .精品久久久麻豆国产精品 亚洲va欧美 | 国产剧情在线一区 | 国产91粉嫩白浆在线观看 | 色综合天天综合 | 久久日本视频 | 一二三四精品 | 最新av免费在线观看 | 99麻豆久久久国产精品免费 | 久久久免费看片 | 五月开心激情网 | 国内免费久久久久久久久久久 | 日批在线看| 激情影音先锋 | 在线色视频小说 | 亚洲桃花综合 | 一级片免费在线 | 亚洲桃花综合 | 免费看一级黄色大全 | 日韩在线观看视频网站 | 欧美99精品| 亚洲精品国产精品国自产在线 | 亚洲精品一区中文字幕乱码 | 色综合天天色 | 欧美一级视频在线观看 | 久久精品日产第一区二区三区乱码 | 色婷婷成人 | 久久国产片 | 福利一区视频 | 日韩爱爱片 | 欧美日韩一区二区免费在线观看 | 在线观看亚洲国产 | 成人91在线观看 | 狂野欧美激情性xxxx | 91大片网站| 久久久天天操 | 免费看一级黄色大全 | 日韩免费一区二区 | 伊人国产在线播放 | 国产日韩视频在线 | 国产在线观看高清视频 | 中文字幕av在线免费 | 综合精品久久久 | 久久99久久99精品免观看软件 | 欧美性直播 | 在线香蕉视频 | 久久观看 | 国产拍在线 | 欧美日韩视频一区二区三区 | 四虎免费av| 国际精品久久久 | 999久久久久久久久久久 | 国内视频在线观看 | 中文字幕日韩国产 | 狠狠色噜噜狠狠 | 久久专区 | 91大神在线观看视频 | 亚洲免费av在线播放 | 亚洲少妇久久 | 久久久免费观看完整版 | 久久久久久久久久久久影院 | 在线观看完整版免费 | 中文字幕av在线不卡 | 91丨九色丨丝袜 | 91刺激视频 | 久久三级视频 | 久久免费99精品久久久久久 | 99热这里只有精品免费 | 国产成人在线一区 | 中文字幕精品三区 | 久久婷婷视频 | 97韩国电影 | 国产高清久久久 | 日韩在线观看你懂的 | 久草在线综合 | 91九色成人蝌蚪首页 | 在线观看欧美成人 | 天天操天天干天天操天天干 | 国产精品美女久久久久久久网站 | 色97在线 | 美国三级黄色大片 | 在线免费黄色毛片 | 激情视频二区 | 欧美成年性| 久久精品直播 | 偷拍精偷拍精品欧洲亚洲网站 | 小草av在线播放 | 国产99久久久久久免费看 | 久久99精品国产麻豆婷婷 | 色在线视频网 | 99精品国产一区二区 | 国产一区在线免费观看视频 | 久久草草热国产精品直播 | 五月婷婷黄色 | www日韩| 免费美女久久99 | 五月天综合色 | 2022中文字幕在线观看 | 国产一级片观看 | 久久久三级视频 | 日韩一级黄色片 | 久久久精品久久日韩一区综合 | 色91在线视频 | 久草在线最新 | 国产视频资源在线观看 | 国产精品国产三级国产aⅴ入口 | 国产短视频在线播放 | 中文字幕文字幕一区二区 | 激情av资源 | 国产精品一级在线 | 中文字幕二区在线观看 | 久草精品免费 | 国产精品亚州 | 国产v视频 | 麻豆久久久久久久 | 91九色视频网站 | 婷婷色中文字幕 | 欧洲高潮三级做爰 | 丁香资源影视免费观看 | 久久久久免费看 | 国产精品美女视频 | 色姑娘综合天天 | 91麻豆精品国产91久久久更新时间 | 天天干 夜夜操 | 国内精品久久久久影院优 | 天天曰天天 | 久久久久久久免费看 | 久草视频在线资源站 | 国产黄色一级大片 | 欧美精品久久久久久久久免 | 欧美日韩免费观看一区=区三区 | 国产精品毛片久久久久久 | 免费看的黄色 | 国偷自产视频一区二区久 | 色网址99 | 精品毛片在线 | 亚洲九九精品 | 中文字幕乱码在线播放 | wwwwww色| 99视频偷窥在线精品国自产拍 | 国产 精品 资源 | 一区二区三区国 | 国产精品精品久久久久久 | 91丨九色丨国产在线观看 | 激情综合网五月激情 | 中文字幕有码在线播放 | 久久国产美女视频 | bbw av| 日韩免费av片 | 欧美韩国在线 | 四虎国产精品免费观看视频优播 | 97人人视频| 久久精品99国产精品酒店日本 | 欧美日韩国产三级 | 亚洲天堂在线观看完整版 | 国产精品99蜜臀久久不卡二区 | 亚洲aaa毛片 | 在线免费观看视频一区 | 日韩欧美一区二区三区在线 | 人人插人人玩 | 日韩色视频在线观看 | 久99久在线| 国产高清免费视频 | 97av在线视频免费播放 | 免费在线观看av不卡 | av一二三区 | 久久综合九色综合欧美就去吻 | 日韩在线观看小视频 | 成人中文字幕av | 97超视频| 国产精品福利在线观看 | 久久综合99| 18性欧美xxxⅹ性满足 | 国产小视频在线免费观看 | 日韩欧美一区二区三区黑寡妇 | 亚洲一二区视频 | 2021av在线| 免费污片 | 国产精品日韩在线观看 | 国产黄色片一级三级 | 99久久爱 | 欧美精品久久久久a | 色在线免费 | 97国产精品视频 | 日韩免费播放 | 久草在线最新免费 | 国产亚洲在线 | 在线国产日本 | 一级片色播影院 | 欧美日韩电影在线播放 | 久久综合免费视频 | 福利视频一二区 | 久久xx视频| 手机在线永久免费观看av片 | 91精品少妇偷拍99 | 日韩中文字幕a | 亚洲久在线| 一区二区欧美在线观看 | 成人在线观看资源 | 免费日韩一区二区 | 国产麻豆视频在线观看 | 在线视频 国产 日韩 | 天天操狠狠操网站 | 免费在线观看av不卡 | 亚洲综合婷婷 | 亚洲国产中文字幕在线 | 欧美成a人片在线观看久 | 激情五月亚洲 | 国产黄色片在线 | 免费黄色网址大全 | 成人在线观看你懂的 | 国产黄色资源 | 亚洲精品视频免费在线观看 | 久久久久免费电影 | 五月婷婷久久丁香 | 成年人在线免费看视频 | 久久网站av| 亚洲一区精品人人爽人人躁 | 色婷婷av一区 | 国产福利精品一区二区 | 久久黄色影视 | 在线天堂中文www视软件 | 成人在线一区二区 | 精品资源在线 | 日韩精品在线观看视频 | 91免费观看视频在线 | 免费在线观看国产黄 | 国产精品九九九九九九 | 日产乱码一二三区别在线 | 国产精品三级视频 | 伊人五月婷| 黄色a一级视频 | www.夜夜夜 | 天天操天天插 | 999久久久久久 | 色网站在线看 | 五月天亚洲激情 | 免费合欢视频成人app | 免费在线观看一区 | 日韩精品一区二区免费视频 | 日韩精品一区二区三区中文字幕 | 2020天天干夜夜爽 | 欧美大香线蕉线伊人久久 | 人人干网站 | 亚州精品在线视频 | 美女黄频在线观看 | 成人一区影院 | 国产精品久久久久一区二区三区 | 国产精品一区二区免费看 | 综合色亚洲 | 国产成人久久av977小说 | 久久精品a| www.99热精品| 97成人在线观看 | 国产69久久久 | 天天插天天操天天干 | 成人黄色电影免费观看 | 久草在线资源视频 | 欧美色图亚洲图片 | 欧美日韩一区二区三区在线免费观看 | 2022中文字幕在线观看 | 久久久一本精品99久久精品 | 九九九九精品九九九九 | 天海翼一区二区三区免费 | 久久国产精品免费看 | 色婷五月天 | 国产精品每日更新 | 日韩精品欧美视频 | 97av免费视频 | 91传媒免费在线观看 | 久久久久久久久影院 | 成人午夜电影网 | www,黄视频| 伊人射| 久草视频在线看 | 国产福利免费在线观看 | 91成版人在线观看入口 | 精品久久中文 | 深爱激情五月网 | 欧美xxxx性xxxxx高清 | 亚洲首页| 国产无限资源在线观看 | 久久久久久久久久亚洲精品 | 深夜视频久久 | 91日韩在线 | 日本特黄特色aaa大片免费 | 黄色一及电影 | 精产嫩模国品一二三区 | 天天躁天天狠天天透 | 欧美视频在线观看免费网址 | 特级毛片aaa | 国产区av在线 | 免费日韩 精品中文字幕视频在线 | 国产一区久久久 | 免费视频在线观看网站 | 中文av影院 | 欧美99久久 | 亚洲成a人片77777潘金莲 | 国产精品中文 | 久久免费国产视频 | 亚洲夜夜网| 97人人澡人人爽人人模亚洲 | 成人高清在线 | 91久久久久久久 | 99久久精品免费 | 日韩在线观看网址 | 精品中文字幕在线 | 亚洲最大av | 日本最大色倩网站www | 久久综合狠狠综合久久激情 | 日批视频在线观看免费 | 91av看片 | 在线视频一二三 | 国产精品麻豆视频 | 国产黄色免费 | 中文字幕中文 | 亚州成人av在线 | 中文字幕在线观看免费 | 97香蕉超级碰碰久久免费软件 | 精品国偷自产在线 | 美女黄色网在线播放 | 999国内精品永久免费视频 | 亚洲伦理精品 | 91夫妻视频 | 日韩中字在线 | 国产理论片在线观看 | 精品夜夜嗨av一区二区三区 | www亚洲一区 | 五月婷婷播播 | 色网免费观看 | 婷婷色视频 | 2019免费中文字幕 | 亚洲精品免费在线视频 | 亚洲 精品在线视频 | 深爱开心激情网 | 国产99久久| 日韩av电影免费在线观看 | 91视频下载| 精品一区二区电影 | 蜜桃麻豆www久久囤产精品 | 欧美日韩高清在线一区 | 久久艹人人 | 日本福利视频在线 | 免费av影视 | av官网在线 | 91中文字幕 | 性色av一区二区 | 九九日九九操 | 97国产小视频 | av一区二区三区在线观看 | 91久久国产露脸精品国产闺蜜 | 午夜成人免费电影 | 欧美色图视频一区 | 日韩av电影中文字幕在线观看 | 国内精品视频在线播放 | 亚洲永久国产精品 | 91黄在线看 | 久草在线费播放视频 | 91在线在线观看 | 中文字幕高清免费日韩视频在线 | 久久精品艹 | 国内揄拍国内精品 | 91精品视频导航 | 一区二区激情 | www久久99| 成人a视频 | 日韩天堂在线观看 | 亚州av网站大全 | 亚洲欧美在线综合 | 亚洲一区二区三区精品在线观看 | 人人爽人人爽人人爽学生一级 | 蜜臀av.com| 久久成电影 | 91精品麻豆| 人人爱人人舔 | 国产亚洲精品久久久久久大师 | 综合婷婷丁香 | 黄色亚洲片 | 色天天综合网 | 久青草影院 | 激情网在线视频 | 国产一级a毛片视频爆浆 | 玖玖在线播放 | 精产嫩模国品一二三区 | 九色91av| 国产一区高清在线 | 国产精品毛片一区视频播不卡 | 在线观看不卡的av | 人人澡人人添人人爽一区二区 | 香蕉视频免费在线播放 | 久久国产网站 | 手机在线观看国产精品 | 天天夜夜亚洲 | 99久久久久久久久久 | 伊人久久影视 | 99久久er热在这里只有精品15 | 男女拍拍免费视频 | 国产精品激情偷乱一区二区∴ | 亚洲理论影院 | 黄色av成人在线观看 | 狠狠伊人| av高清一区 | 国产麻豆精品95视频 | 久久精品中文 | 日韩精品欧美一区 | 亚洲精品国偷拍自产在线观看蜜桃 | 成年人国产精品 | 国产精品色婷婷视频 | 日韩视频免费 | 不卡av在线播放 | 91在线麻豆| 91日韩在线视频 | 五月综合色婷婷 | 国产女v资源在线观看 | 久久久免费国产 | 中文字幕久久亚洲 | 日韩视频www | 91福利国产在线观看 | 在线观看国产高清视频 | jizz999| 久久综合五月 | 久久图 | 在线播放精品一区二区三区 | 国产精品视频99 | 亚洲日本色 | 久久av影视 | 91视频 - v11av | 色婷婷免费视频 | 国产精品一区电影 | 日本精品视频在线观看 | 日本福利视频在线 | 五月天激情开心 | 丁香高清视频在线看看 | 日日干美女 | 91亚色免费视频 | 亚洲综合成人专区片 | 在线观看免费日韩 | 顶级欧美色妇4khd | 亚洲狠狠操 | 四虎伊人| 国产一级不卡毛片 | 久久视频网址 | 51久久成人国产精品麻豆 | 最新成人av | 国产亚洲视频中文字幕视频 | 色五月色开心色婷婷色丁香 | 蜜臀av夜夜澡人人爽人人桃色 | 久久视频这里有精品 | 精品一区 在线 | 久久伊人五月天 | 天天干天天在线 | 视频一区二区视频 | 国产精品永久 | 久久亚洲影视 | 91污视频在线观看 | 青草视频在线播放 | 久草视频一区 | 操操操人人人 | 成人av片免费观看app下载 | 男女日麻批 | 国产亚洲视频在线免费观看 | 综合网久久 | 久久人视频 | 中文字幕免费观看全部电影 | 久久视频国产精品免费视频在线 | 97av精品| h网站免费在线观看 | 国产精品高清免费在线观看 | 开心综合网 | 97超碰.com | 免费观看黄 | 成人97人人超碰人人99 | 狠狠综合久久 | 8090yy亚洲精品久久 | 久久96国产精品久久99漫画 | 国产精品mm | 免费精品视频在线观看 | 日本韩国精品一区二区在线观看 | 国内免费的中文字幕 | 二区视频在线观看 | 午夜少妇一区二区三区 | 99视频网站 | 精品久久久久久久久久 | 中文字幕亚洲综合久久五月天色无吗'' | 一区二区三区高清在线 | 亚洲激情六月 | 99视频在线观看视频 | 麻豆视频免费看 | 国产一级大片免费看 | 久草在线网址 | 97免费在线观看视频 | 三级av免费看 | 综合久久精品 | 成人在线播放网站 | 99久久精品免费看国产 | 五月婷婷激情六月 | 97色综合| 国产精品不卡在线观看 | 欧美一区二区免费在线观看 | 国产 在线观看 | 国产91丝袜在线播放动漫 | 亚洲日本韩国一区二区 | 免费电影一区二区三区 | 国产视频 亚洲视频 | 亚洲第一成网站 | av资源免费在线观看 | 国产一区二区三区午夜 | 国产成人精品一区二区三区福利 | 国产网站色 | 色在线视频 | 国产精品欧美一区二区三区不卡 | 日韩精品一区二区三区不卡 | 成人aaa毛片 | 亚洲爱av| 超碰97中文 | 日韩三级视频在线观看 | 免费三级在线 | 国产亚洲精品bv在线观看 | 国产免费久久久久 | 视频直播国产精品 | 精品亚洲在线 | 99精品视频在线观看 | 99热超碰| 国产69精品久久久久久 | 99热精品视 | 国产涩涩网站 | 激情婷婷在线观看 | 狠狠色2019综合网 | 美女av电影 | 久久久久久久久久久久影院 | jizz999| 日韩欧美一区二区三区视频 | 天天天在线综合网 | 特黄色大片 | 国产精品久久艹 | 91视频在线免费下载 | 久久麻豆精品 | 五月天久久久久 | 久久精品国产亚洲精品2020 | 日韩精品一区二区三区高清免费 | 91香蕉国产在线观看软件 | a久久免费视频 | 日韩理论在线 | 激情影院在线观看 | 国产亚洲免费观看 | av中文字幕第一页 | 91精品久久久久久 | 久久免费av电影 | 成人一区二区三区在线观看 | 久久久久国产精品免费网站 | 99国产在线| 五月婷婷黄色网 | 天天操天天操天天操 | 在线精品在线 | 国产麻豆果冻传媒在线观看 | 免费亚洲婷婷 | 国产精品丝袜在线 | 久久综合欧美精品亚洲一区 | 在线观看久久久久久 | 免费视频一二三 | 国产一区在线视频播放 | 五月天久久激情 | av品善网 | 国产精彩视频一区 | 日韩激情一二三区 | 最新成人av | 亚洲国产视频在线 | 国产999精品久久久久久 | 色播五月激情五月 | 欧美成人精品欧美一级乱黄 | 久久久久网址 | 国产aaa毛片| 久久久高清一区二区三区 | 欧美一区日韩一区 | 亚洲女人天堂成人av在线 | 日日夜精品 | 久久九九免费视频 | www最近高清中文国语在线观看 | 国产福利精品一区二区 | 久久看片网| 992tv在线成人免费观看 | 国产99在线免费 | 国产九色视频在线观看 | 亚洲最新视频在线 | 天天操天天干天天玩 | 天堂网在线视频 | 国精产品999国精产品视频 | 一区二区三区免费在线观看视频 | 手机av电影在线 | 精品中文字幕在线播放 | 久久免费视频8 | 99热最新地址 | 人人爽人人爱 | 亚洲精品久久久久久久不卡四虎 | 色在线网 | 中文字幕精品www乱入免费视频 | 色婷婷激婷婷情综天天 | 亚洲最大成人网4388xx | 亚洲精品久久久久www | 香蕉视频免费看 | 国产三级视频在线 | 在线导航av | 色在线网 | 免费在线观看黄色网 | 欧美久久久久久久 | 欧美日性视频 | 国产精品一区免费在线观看 | 1000部18岁以下禁看视频 | 国产99精品 | 视频一区视频二区在线观看 | 久久久高清 | 91精品一| 91亚洲精品久久久蜜桃 | 色婷婷成人网 | 亚洲精品女人久久久 | 国产精品一区久久久久 | 成人aⅴ视频 | 婷婷六月综合网 | 免费观看第二部31集 | 国产精品欧美精品 | 91福利视频免费 | 午夜精品久久久久久久99无限制 | 国产露脸91国语对白 | 玖玖玖国产精品 | 久亚洲| 91免费观看| 久久色亚洲 | 美女视频黄色免费 | 网站你懂的 | 美女视频久久 | 一级片免费在线 | 欧美日韩二区三区 | 婷婷丁香久久五月婷婷 | 日韩高清精品一区二区 | 天天操天天插 | 亚洲精品456在线播放 | 日日操夜夜操狠狠操 | 黄色精品久久久 | 深爱激情综合 | 久久一区二区三区国产精品 | 亚洲成人免费在线 | 欧美国产一区在线 | 久久久久国产免费免费 | 婷婷狠狠操 | 久久久毛片 | 国产精品久久久久久久7电影 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日狠狠| 欧美午夜a | 在线观看www91 | 日日操日日插 | 久草视频在线免费播放 | 午夜色大片在线观看 | 伊人狠狠色丁香婷婷综合 | 丁香六月久久综合狠狠色 | 久久久精品网站 | 天天爽综合网 | 亚洲成人av免费 | 日韩av免费一区二区 | 亚洲精品国产精品国自产观看 | 在线观看91精品视频 | 五月婷婷综 | 国产一区精品在线 | 日本中文乱码卡一卡二新区 | 香蕉在线影院 | 97视频亚洲| 91亚洲精品久久久久图片蜜桃 | 国产精品黄色在线观看 | 日韩精品免费一区二区 | 国产丝袜高跟 | 国产激情电影综合在线看 | 免费网站黄 | 婷婷在线色 | 91网页版免费观看 | 亚洲精品玖玖玖av在线看 | www91在线 | 久久久精品成人 | 日韩av三区 | 91日韩在线视频 | 成人av在线网址 | 成人av网址大全 | 亚洲 欧洲 国产 日本 综合 | 在线观看国产 | 久久精品99北条麻妃 | 亚洲激情综合 | 免费黄色a级毛片 | 国产五十路毛片 | 欧美日韩在线观看一区 | 久草在线在线视频 | 91成人精品| 国产成人av在线影院 | 91视频黄色 | 99久久99视频只有精品 | 免费在线观看黄色网 | 日韩在线观看高清 | 午夜免费电影院 | 黄色精品视频 | 一区二区三区四区精品 | 久久久影视 | 天天综合网天天综合色 | 欧美性极品xxxx娇小 | 草在线| 欧美一区二区三区在线视频观看 | 91精品老司机久久一区啪 | 欧美日韩视频观看 | 成年人视频在线免费观看 | 久久久久久久久久伊人 | 人人爽久久久噜噜噜电影 | 天天操天天射天天插 | 高清av免费看 | 久久99深爱久久99精品 | 高清av中文字幕 | 国产精品资源在线 | 狠狠操夜夜操 | 欧美另类老妇 | 欧美黑人性爽 | 日日干美女 | 天天色天天射天天干 | 91精品在线观看视频 | 九九九九免费视频 | 日韩精品免费在线观看视频 | 在线免费观看欧美日韩 | 天天干天天射天天操 | 99热精品国产一区二区在线观看 | 亚洲尺码电影av久久 | 久久国产精品色婷婷 | 久久国产一区 | 精品99999| 国产91影院| 色网av| 91九色蝌蚪在线 | 亚洲少妇天堂 | 五月激情站 | 激情图片区 | 亚洲天堂毛片 | 超碰97免费观看 | 日p在线观看 | 日韩久久在线 | 成人av免费在线观看 | 麻豆一区在线观看 | 91女人18片女毛片60分钟 | 国产精品99久久久久久人免费 | 中文字幕中文字幕在线中文字幕三区 | 日日综合 | 99国内精品久久久久久久 | 久久韩国免费视频 | 国产精品久久99综合免费观看尤物 | 久久免费福利视频 | 国产成人精品久久二区二区 | 又污又黄网站 | 国产精品夜夜夜一区二区三区尤 | 国产一区二区在线免费视频 | 99热在线观看 | 国产一级黄 | 国产精品久久人 | 91精品啪在线观看国产 | 午夜电影av | 久久久国产一区二区三区 | 午夜色大片在线观看 | 欧美黄色特级片 | 夜夜夜夜爽| 99精品一区 | 国产在线无 | 国产视频久 | 久久av免费| 色综合夜色一区 | 天天综合网久久 | 91在线观看视频网站 | 精品国产一区二区三区久久久蜜月 | 一区二区三区不卡在线 | 欧美美女一级片 | 久久久蜜桃一区二区 | 美女精品 | 免费碰碰 | 成人久久久精品国产乱码一区二区 | 黄色www在线观看 | 成人av一二三区 | 日本韩国精品一区二区在线观看 | 午夜精品一区二区三区可下载 | 国产亚洲在线 | 五月婷婷电影网 | av福利在线免费观看 | 成人一区电影 | 久草99| 91麻豆精品国产91久久久久久久久 | 91视频免费网址 | 91尤物国产尤物福利在线播放 | 中文字幕乱码电影 | 2019中文字幕第一页 | 国产91小视频 | 亚洲欧美国产视频 | 婷婷激情综合 | 精品在线亚洲视频 | 97av在线| 久久9视频 | 三级性生活视频 | 96精品高清视频在线观看软件特色 | 精品久久久久亚洲 | 国产精品国内免费一区二区三区 | 日韩性xxxx | 亚洲精品永久免费视频 | 麻豆免费视频网站 | 亚洲视频在线观看网站 | 久久精品波多野结衣 | 在线播放 日韩专区 | 日日夜夜天天人人 | 99情趣网视频 | 成片人卡1卡2卡3手机免费看 | 伊人永久在线 | 成人91视频 | 天天爱天天操天天爽 | 国产高清成人 | 超级碰碰免费视频 | 久久黄色小说视频 | 99热最新在线 | 男女啪啪视屏 | 国产一区免费观看 | www国产亚洲 | 国产在线观看高清视频 | 国产一区二区三区视频在线 | 天天色中文 | 免费观看一级特黄欧美大片 | 中国成人一区 | 成+人+色综合 | 精品久久一区二区三区 | 午夜久久久久久久久 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 精品久久一区二区 | 在线一级片 | 国产专区视频在线观看 | 日本护士三级少妇三级999 | 久久韩国免费视频 | 中文区中文字幕免费看 | 国产在线免费观看 | 日韩中字在线观看 | 高清不卡一区二区在线 | 美女视频又黄又免费 | 亚洲精品免费观看 | 蜜臀aⅴ国产精品久久久国产 | 91精品久久久久久 | 欧美日韩激情视频8区 | 91精品国产综合久久婷婷香蕉 | 在线观看播放av | 99精品国产99久久久久久97 | 久久免费黄色大片 | 欧美日韩综合在线 | 国产成人一区三区 | 中文字幕在线看片 | 国产中文伊人 | 日韩久久在线 | 免费福利视频导航 | 国产在线一卡 | 久久人人爽 | 免费福利片2019潦草影视午夜 | 九九色在线观看 | 国产成人在线网站 | 久草免费在线观看 | 91久久久国产精品 | 高清av免费一区中文字幕 | 欧美日韩精品在线播放 | 久久精品精品电影网 | 丝袜美腿亚洲综合 | 久久免费在线观看 | 亚洲精品1区2区3区 超碰成人网 | 国产在线更新 | 少妇按摩av | 国产小视频精品 | 国产精品一区免费看8c0m | 99视频在线精品国自产拍免费观看 | 亚洲精品乱码久久久久 | 色综合天天狠天天透天天伊人 | 探花视频在线观看+在线播放 | 亚洲综合婷婷 |