Weekly SaaS, Идея 1: Давайте научимся создавать программное обеспечение вашей мечты SaaS.

Привет всем! Сегодня мы будем создавать инструмент перефразирования с использованием react js, который позволит вам легко переписывать, перефразировать, изменять и преобразовывать синтаксис и структуру входного текста. Этот инструмент поддерживает более 50 языков, включая английский, французский, немецкий, испанский, итальянский, арабский и китайский с автоматическим определением языка.

Это означает, что если вы хотите перефразировать китайское предложение, вам нужно будет только скопировать и вставить его в перефразировщик, и этот инструмент сделает эту работу за вас.

Примечание. Я буду писать руководства по созданию различных типов приложений, машинному обучению и многому другому. И если вы хотите, чтобы ваша идея была единой, поделитесь со мной своей идеей здесь, [email protected]

Предварительный просмотр рабочего приложения

Что вы узнаете

  • Создать реактивный проект
  • Обработка API
  • Реагировать на крючки

Оглавление

Начнем… :)

Создание и установка необходимых пакетов

Откройте терминал на рабочем столе или в любом другом месте, где вы хотите создать это приложение. И создайте новую папку в каталоге с именем paraphrasing_tool и измените каталог на папку.

mkdir paraphrasing_tool 
cd paraphrasing_tool 

Теперь создайте новое приложение для реагирования, используя команду создания нового приложения для реагирования.

npx create-react-app .

После успешного создания приложения установите пакеты Axios с помощью команды npm. Axios полезен для нас, чтобы соединиться с API.

npm i axios

Очистка приложения

Откройте папку в vscode.

code .

Теперь пришло время очистить приложение, здесь мы удалим ненужные файлы и очистим App.js.
Удалите следующие файлы App.css, App.test.js и logo.svg.

Теперь откройте файл App.js, удалите все в файле и с помощью ярлыка vscode rafce создайте в файле новую чистую функцию.

Далее запустите приложение с помощью команды npm start, приложение должно запуститься без ошибок.

Создание компонентов и разработка приложения

Что ж, конечно, в простом блоге мы не можем часами писать CSS, поэтому я просто попрошу вас скопировать и вставить следующий код CSS в файл index.css.

Откройте файл index.css в vscode, скопируйте и вставьте этот код CSS.

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.container {
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.text_box {
  width: 80%;
  display: flex;
}
.text_box textarea {
  width: 50%;
  height: 300px;
  margin: 10px;
  padding: 5px;
  font-size: 17px;
  outline: none !important;
  border: 2px solid #e0e0e0 ;
  border-radius: 3px;
  box-shadow: 0 0 5px #719ECE;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  -ms-border-radius: 3px;
  -o-border-radius: 3px;
}

.text_box textarea:focus {
  outline: none !important;
  border: 3px solid #00b0ff  ;
  box-shadow: 0 0 5px #719ECE;

}
.button_box {
  width: 80%;
  display: flex;
  justify-content: space-between;
}
.button_box button, .button_box p {
  margin: 10px;
}
.button_box button {
  border: 2px solid #00b0ff;
  background-color: #00b0ff;
  color: #eee;
  font-size: 17px;
  padding: 5px 10px;
  border-radius: 3px;
  cursor: pointer;
  font-weight: bold;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  -ms-border-radius: 3px;
  -o-border-radius: 3px;
}
.button_box button:hover {
  background-color: #fff;
  color: #00b0ff;
}
.button_box p {
  font-size: 18px;
  font-weight: bold;
  color: #333;
}
.button_box p span {
  color: #00b0ff;
}

Теперь откройте файл App.js, здесь мы создадим структуру приложения. Мы создадим обернутый контейнер и две строки div в контейнере, как показано ниже.

Вот чистый HTML-код, необходимый для запуска приложения.

        <div className='container'>
            <div className="text_box">
                <textarea ></textarea>
                <textarea class="loading" disabled ></textarea>
            </div>
            <div className="button_box">
                <button>Paraphrase</button>
                <p>similarity: <span>0.22</span></p>
            </div>
        </div>

В этот момент, если вы зайдете в приложение в браузере, вы увидите приложение, как мы и хотели.

Далее вам нужно импортировать useState из react js. И создайте 4 разных состояния, которые необходимы для этого приложения.

  1. Загрузка: для загрузки показываем экран загрузки, пока не получим возвращенные данные
  2. input: здесь мы будем хранить введенный пользователем текст
  3. Сходство: это сходство текста, ввода и вывода. Мы также получаем это из API
  4. Результат: это выходные перефразированные данные, возвращаемые из API.

Используйте следующий набор кодов, чтобы настроить это.

    const [loadin, setLoading] = useState(true)
    const [input, setinput] = useState("")
    const [similarity, Setsimilarity] = useState(0)
    const [result, SetResult] = useState("")

Это все, что нам нужно для хранения данных для этого приложения. Далее мы создадим функцию для обработки щелчка.

В основном, что произойдет после того, как вы нажмете кнопку «Перефразировать»

Создайте имя функции handleClick, которая будет принимать пользовательский ввод в качестве периметра, и эта функция будет устанавливать загрузку и выходные данные.

    const handleClick = async input => {
        setLoading(true)
        // CALL API HERE

        setLoading(false)
        SetResult("balh balh") 
        Setsimilarity("blah balh") 
 
    }

Теперь мы должны показать данные нашему пользователю, то есть мы должны добавить эти переменные в возвращенный html-документ. В дальнейшем.

return (
    <div className='container'>
        <div className="text_box">
            <textarea onChange={e => setinput(e.target.value)} >{input}</textarea>
            { 
                loadin ? 
                ( <textarea class="loading" disabled ></textarea>) 
                :
                (
                    <textarea value={result}>{result}</textarea>
                )
            }
        </div>
        <div className="button_box">
            <button onClick={() => {handleClick(input)}}>Paraphrase</button>
            {similarity > 0 ? (<p>similarity: <span>{similarity}</span></p>): null}
        </div>
    </div>
)

Создание API и подключение к нему

Сегодня мы будем использовать Rapidapi в качестве поставщика услуг API, поэтому вам нужно будет посетить https://rapidapi.com/ и создать учетную запись.

После успешного создания учетной записи вам нужно будет бесплатно подписаться на API paraphraser1, посетив https://rapidapi.com/vidanov-PTkl1skiJB3/api/paraphraser1.

После этого процесса вернитесь к vscode и создайте имя папки apis внутри папки src, затем создайте имя файла Api.js и откройте файл.

В этом файле мы установим соединение с нашим API, используя следующий код.

import axios from 'axios'

const Api = async text => {
    const options = {
        method: 'POST',
        url: 'https://paraphraser1.p.rapidapi.com/',
        headers: {
          'content-type': 'application/json',
          'X-RapidAPI-Key': 'YOUR_API_KEY_HERE',
          'X-RapidAPI-Host': 'paraphraser1.p.rapidapi.com'
        },
        data: {
          input: text
        }
    }
    try {
        const response = await axios.request(options)
        console.log(response.data)
        return response.data
    } catch (err) {
        console.log(err)
    }
}

export default Api

Затем импортируйте этот файл внутрь файла app.js, и давайте начнем вызывать API и собирать из него данные.

Импорт API

import Api from './Apis/Api

Мы будем вызывать API внутри функции handleclick, а также одновременно обновлять данные. Итак, давайте обновим эту функцию следующим образом.

    const handleClick = async input => {
        setLoading(true)
        const res = await Api(input)
        
        setLoading(false)
        SetResult(res.output) 
        Setsimilarity(res.similarity) 
 
    }

Теперь приложение должно работать так, как мы ожидали. Без каких-либо ошибок и должен перефразировать текст.

Урааааааа. Мы реализовали нашу первую идею...

Заключение

Я надеюсь, что вы получили много знаний из этого поста, в целом это очень простое приложение, в будущем мы будем создавать более продвинутые приложения, поскольку я получаю больше идей от читателей.

Вы можете поделиться со мной своими идеями здесь: https://www.instagram.com/nafiu.dev

ссылка на репозиторий GitHub: https://github.com/nafiu-dev/react_parapharaser_saas

Спасибо за чтение.

Вы можете связаться со мной здесь:

https://www.instagram.com/nafiu.dev

Linkedin: https://www.linkedin.com/in/nafiu-nizar-93a16720b

Другие мои сообщения:





Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .